现在是切换的好时机,因为 PHP 7.0ext/mysql
从核心中删除了这些功能。
考虑以下遗留代码
$res = mysql_query($sql);
这些mysql_
函数是惰性的,因为它会使用任何打开的连接。但mysqli_
不仅不是懒惰,它是一个对象,而不是连接资源(这是mysql_connect()
会返回的)。在此处查看这些行以连接到数据库
$mysqli = new mysqli('host', 'username', 'password', 'db');
$mysqli = mysqli_connect('host', 'username', 'password', 'db');
他们都给你同样的东西......
返回一个表示与 MySQL 服务器的连接的对象。
是的,这是正确的。甚至程序连接函数也返回一个对象。直接使用它的最简单方法是对象形式
$mysqli->query($sql);
过程函数只是对此的包装。但他们并不懒惰。查看差异
mysqli_query($mysqli, $sql);
其中最大的问题(为什么简单的查找和替换mysql_
失败mysqli_
)是大多数mysqli_
函数都要求您将连接对象作为第一个参数传递。同样重要的是要注意结果也是对象(mysqli_result类),尽管它们的过程对应物只需要结果集,因此您可以简单地查找/替换它们。
为了完整起见,还有另一个不太常见的问题(这确实是旧代码):mysql_result。此功能在mysqli_
. 您应该切换到完整的行返回函数,例如mysqli_fetch_assoc($result)