今天,你的PHP连接数据库的方式

首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

收藏此问题 发表新评论

今天,你的PHP连接数据库的方式

RT
昵称: cevin.zyc  时间: 2012-05-07 22:19:56
没人说明原因?现在大部分虚拟主机也支持pdo和mysqli了吧。
昵称: cevin.zyc  时间: 2012-05-07 22:31:09
mysql_connect习惯而已
昵称: 350785770  时间: 2012-05-07 22:42:13
{:soso_e104:}貌似用connect的吧,,,咱接触的都是LAMP/LNMP环境,,所以connect就够了。。
昵称: leejianjun  时间: 2012-05-08 08:35:33
mysql_connect

1 够用
2 php5.4里  MySQLi 过程函数被废弃了好多
3 赶进度,木时间研究面向对象的MySQLi PDO
   底层这玩意还是先用自己能把握的

补充内容 (2012-5-8 20:08):
反正是 工厂+单例
SQL方法都封装过了
到时候在PDO的基础上封装一个就行了
昵称: 大尾巴  时间: 2012-05-08 12:53:54
自己封装好的函数库;专注于业务实现
昵称: aCat  时间: 2012-05-08 15:59:43
ci 连接 SQL Server 采用的驱动是 mssql
没办法数据库是现成的
昵称: phptree  时间: 2012-05-08 16:25:00
我一搬都是采用CI+PDO去连接的,没办法我们公司的数据库太多了,这是我最好的选择
昵称: 三棵小白菜3  时间: 2012-05-09 17:23:58
都是封装的驱动,随意切换,不在乎连接方式
昵称: 剑枫  时间: 2012-05-10 10:29:24
我有个客户网站使用的是MSSQL(历史原因), 只好自己写了一个库, 因为PHP的MSSQL库有严重的问题.
昵称: sztime  时间: 2012-05-10 17:50:00
我擦,ADODB为啥被鄙视啊..我最近做个项目就要用这个,因为后面要切换到oracle
昵称: ┊¨彼◆岸〃  时间: 2012-05-10 20:32:54
本帖最后由 iminto 于 2012-5-10 23:39 编辑
sztime 发表于 2012-5-10 17:50
我有个客户网站使用的是MSSQL(历史原因), 只好自己写了一个库, 因为PHP的MSSQL库有严重的问题. ...

实际上PHP对数据库的支持是非常差的。。。

除了MYSQL和sqlite外,其它都实在不咋地。。BUG多,驱动旧,功能有限。。。
我看到不少驱动都是很多年前,甚至上个世纪的版本.当然,这是多方面原因造成的。
一个是数据库厂商不积极,一个是PHP用得最多的就是MYSQL,其它数据库php项目里很少用,自然没那么积极了

不过连MSSQL,微软提供了几个新的驱动,应该不会有啥大问题吧

我觉得用PHP连MYSQL和SQLITE外的数据库,都有点蛋疼。。。
昵称: iminto  时间: 2012-05-10 23:31:21
历史原因,一直使用mysql_connect,以前用pdo很少,且pdo要配置,很多服务器并不支持。
不过以后有新项目准备用pdo,现在新装服务器都先把pdo编译进去了,呵呵,就等以后用。
昵称: 可可  时间: 2012-05-11 13:54:28
php 5.2.x时用 pdo连接数据库,尤其是db2数据库,php5.3.x php5.4后改为直接连接驱动了,php不提供php_pdo_ibm.dll了。好像现在pdo有不大行了。
昵称: xiaoyf  时间: 2012-05-11 14:35:10
我用Adodb+MySQLi   
+ mysql_connect、mysql_pconnect
昵称: xiasha11  时间: 2012-05-12 09:27:15
.  mysql_connect、mysql_pconnect
昵称: only1  时间: 2012-05-12 19:01:03
22222222222222222
昵称: 虫虫在此哦  时间: 2012-05-13 17:34:05
我喜欢面向对象的,但是这个项目决定了没法用..只能用过程的
昵称: 南龙  时间: 2012-05-14 14:43:18
iminto 发表于 2012-5-10 23:31
实际上PHP对数据库的支持是非常差的。。。

除了MYSQL和sqlite外,其它都实在不咋地。。BUG多,驱动旧,功 ...

PGSQL
昵称: 费升格  时间: 2012-05-29 16:08:14
CON用的多把
昵称: chrc  时间: 2012-05-30 12:56:51
习惯用mysql_connect、mysql_pconnect
昵称: cuifuxuan  时间: 2012-05-30 21:00:36
pdo,还是pdo
昵称: sumuu  时间: 2012-05-31 16:39:31
PDO
昵称: 七月十五  时间: 2012-06-14 11:07:16
七月十五 发表于 2012-6-14 11:07
PDO

七月十五惊天回归
昵称: cevin.zyc  时间: 2012-06-14 11:39:29
还有mysql类呢
昵称: yunyu2019  时间: 2012-06-16 16:57:41
pdo是啥啊,我是个新人。
昵称: _974544431  时间: 2012-06-20 20:58:01
刚接触PDO
昵称: lee_001  时间: 2012-06-24 23:53:19
_974544431 发表于 2012-6-20 20:58
pdo是啥啊,我是个新人。

转载一篇文章 PDO的文章 http://www.wikischina.com/php-archives/219.html
昵称: lee_001  时间: 2012-06-25 00:21:26
pdo连接相对安全多了!接口也更加标准了
昵称: lyfqs  时间: 2012-06-26 20:40:26
早在十几年前,就讨论过的话题了。
PDO就是JAVA里的JDBC的翻版,ASP里的ODBC的翻版,十几年前就针对JDBC讨论过通用性和性能的问题。
最终,谁赢谁输不言而喻。
昵称: lyfqs  时间: 2012-06-26 20:48:13
看了留言   {:soso_e150:}
昵称: 齐迹  时间: 2012-08-14 10:34:32
mysql_connect 支持各种配置环境,方便
昵称: iminto  时间: 2012-08-16 21:59:37
wangweiak 发表于 2012-8-27 11:28
mysql_connect 支持各种配置环境,方便

PDO还支持各种数据库呢。
昵称: fujianhui  时间: 2012-08-17 10:53:27
我一直用mysql mysqli
昵称: wangweiak  时间: 2012-08-27 11:28:40
mysql_connect还是这个
昵称: cevin.zyc  时间: 2012-08-27 11:29:52
mysql_connect吧,我记得我们是ci1.7的,老,真的不想用,mysqli多么好的东西
昵称: key9  时间: 2012-09-28 09:52:58
mysql_connect
昵称: hanzhenhui  时间: 2012-09-29 09:45:39
今天。。。必然是pdo啊
昵称: kylidboy  时间: 2012-10-17 22:36:07
今天。。。必然是pdo啊
昵称: 化蝶自在飞  时间: 2012-10-21 19:11:26
mysql_connect吧
昵称: AmuroPikin  时间: 2012-10-21 22:01:14
PDO使用习惯了……估计这个是习惯问题
昵称: AmuroPikin  时间: 2012-10-21 22:01:26
@游戏风
点开一个页面 里面有100次查询
你要 mysql_connect 100次么?
昵称: 爱℅Ж的ξ  时间: 2012-10-25 18:04:17
我是第二种
昵称: ruckfull  时间: 2012-11-06 16:46:54
大尾巴 发表于 2012-12-19 16:29
@游戏风
点开一个页面 里面有100次查询
你要 mysql_connect 100次么?

@大尾巴
首先一个页面真要查询100次也是用不着非要 mysql_connect 100次的,可以用个全局变量存放数据库句柄,就算是不用全局变量来存放数据库句柄也无所谓,Mysql_Connect上100次也是没关系的,只要你的mysql数据库是同一个,只要你第一次connect之后没有关闭,只要你connect的时候没有强制指定新开连接,那么即便你connect上1万次也是返回你第一次打开的数据库句柄,绝对不会新开1万零一个数据库句柄的。这就是mysql_connect的先天单例模式,默认模式下,mysql_connect针对同一个mysql链接打开的资源都会检测是否已经打开过,如果打开过会直接返回上一次的资源,而不会新开资源。所以说PHP+MYSQL的单例模式绝对是画蛇添足的代表,纯粹是为了模式而“模式”。
昵称: 大尾巴  时间: 2012-12-19 16:29:03
mysql_connect的详细注解可以在这里找到
http://www.php.net/mysql_connect
说明里很清晰的标注着:
“打开或重复使用一个到 MySQL 服务器的连接”;
“如果用同样的参数第二次调用 mysql_connect(),将不会建立新连接,而将返回已经打开的连接标识。”
这说明 mysql_connect是内置默认的单例模式。
昵称: 无城浪子  时间: 2012-12-21 19:00:13
{:soso_e145:}
昵称: 游戏风  时间: 2012-12-25 08:46:48
游戏风 发表于 2012-12-25 09:02
mysql_connect的详细注解可以在这里找到
http://www.php.net/mysql_connect
说明里很清晰的标注着:

受教了

不过 DB::instance()->  返回一个实例操作  比 (new DB)-> 写起来舒服点
昵称: 游戏风  时间: 2012-12-25 09:02:46
以前用MYSQL_CONNECTION,现在都用封装好的了,能用就行!有时间的时候才会去研究其他底层的东西
昵称: 才大师赖茅  时间: 2012-12-25 09:32:45
mysql,不错
昵称: 大尾巴  时间: 2012-12-26 17:41:40
我只会第3种
昵称: 云端o枫o0  时间: 2013-01-03 23:43:52
被鄙视了{:soso_e141:}
昵称: kanwug  时间: 2013-01-06 17:56:05
mysql_connect、mysql_pconnect
昵称: jackieasy  时间: 2013-01-27 12:30:32
这个一定要多使用PDO,不是危言耸听,这是趋势

PHP 5.1之后,已经内置PDO支持

PHP手册上写得非常清楚:
The query only needs to be parsed (or prepared) once, but can be executed multiple times with the same or different parameters. When the query is prepared, the database will analyze, compile and optimize its plan for executing the query. For complex queries this process can take up enough time that it will noticeably slow down an application if there is a need to repeat the same query many times with different parameters. By using a prepared statement the application avoids repeating the analyze/compile/optimize cycle. This means that prepared statements use fewer resources and thus run faster.
The parameters to prepared statements don't need to be quoted; the driver automatically handles this. If an application exclusively uses prepared statements, the developer can be sure that no SQL injection will occur (however, if other portions of the query are being built up with unescaped input, SQL injection is still possible).


即使用PDO最重要的原因:
1.  使用prepare提升批量查询性能
2.  从根本上杜绝SQL注入的问题
昵称: kaisource  时间: 2013-04-08 23:54:45