因此,我相信任何经常使用mysqli_的人都已经注意到,mysql_函数将被弃用,建议使用mysqli_或PDO。因此,我决定在我的代码中执行一个简单的查找/替换操作,将每个mysql_替换为mysqli_,从而过渡到mysqli。这在Dreamweaver中似乎工作得很好,我没有得到任何语法错误或任何东西。所有新的mysqli_函数都是蓝色的,这意味着它们被识别为有效函数。
但是,当我保存所有内容并运行代码时,我注意到任何与mysql有关的代码都已不起作用。撤消替换解决了问题。
我的服务器可能不支持mysqli函数吗?我知道它运行的是php 5和mysql 5,是不是还有其他东西需要添加到代码中呢?我遗漏了什么?
发布于 2015-12-03 02:57:44
现在是切换的好时机,因为PHP7.0从核心中删除了ext/mysql函数。
考虑以下遗留代码
$res = mysql_query($sql);mysql_函数是惰性的,因为它将使用任何打开的连接。但是mysqli_不仅不是懒惰的,它是一个对象,而不是一个连接资源(这是mysql_connect()会返回的)。请看这里的connecting to the database代码行
$mysqli = new mysqli('host', 'username', 'password', 'db');
$mysqli = mysqli_connect('host', 'username', 'password', 'db');他们给你的都是一样的东西。
返回一个对象,它表示到MySQL服务器的连接。
是的,这就对了。即使是过程连接函数也会返回一个对象。使用它的最简单的方法是直接以对象的形式使用
$mysqli->query($sql);过程函数就是对此的简单包装。但他们并不懒惰。了解其中的区别
mysqli_query($mysqli, $sql);其中最大的一个陷阱(为什么用mysqli_查找和替换mysql_会失败)是,大多数mysqli_函数都要求您将connection对象作为第一个参数进行传递。同样重要的是要注意,结果也是对象(mysqli_result类),尽管它们的过程对应物只需要结果集,因此您可以简单地查找/替换它们。
为了完整起见,还有一个不太常见的陷阱(这是真正的旧代码):mysql_result。此函数在mysqli_中没有等效项。您应该切换到整行返回函数,如mysqli_fetch_assoc($result)
发布于 2015-12-03 03:21:31
您可能想查看http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers,它应该告诉您关于迁移mysql_代码所需了解的所有信息,但是迁移到PDO,而不是MySQLi。
发布于 2015-12-08 20:46:32
当你替换你的代码时,你必须知道有很多问题可能已经发生了。
**简单连接,如natimysql:
$con = mysqli_connect("localhost","my_user","my_password","my_db");
但现在你必须像这样使用它
mysqli_query($con,"SELECT * FROM Table"); // $con is the connection which is must for executing the sql query
**我最好的方法就是像这样把它作为新的mysqli对象处理:
$con = new mysqli('localhost', 'user', 'pass', 'demo');
现在,您将像这样做:
$sql = "SELECT * FROM Table";$con->query($sql);
如果您检查了之前执行的每个查询,则必须找到其中一个错误,特别是第3点中的错误,您可以在其教程here、here或here中进行浏览
https://stackoverflow.com/questions/14418090
复制相似问题