我目前有PHP 5.3,需要至少升级到PHP 5.5/5.6。我有一个发布出租房产平均值的页面。有一段时间,我可以使用mysql,但当我升级时,需要使用mysqli。下面是我尝试用PDO编写的代码。
$hostname = "your_hostname";
$username = "your_username";
$password = "your_password";
$db = "database";
$dbh = new PDO("mysql:host=$server;dbname=$db", $user, $pass);
foreach ($dbh->query("SELECT MAX(rent) FROM table WHERE PType ='$PType' AND PState = '$state'") as $row) {
$SMR = "" . $row['MAX(rent)'] . "";
}
这适用于PHP 5.3,但不适用于PHP 5.5/5.6。我已尝试将$dbh
行更改为:
$dbh = new PDO("mysqli:host=$server;dbname=$db", $user, $pass);
错误日志中出现驱动程序错误。
有更好的方法吗?
这里似乎有一些关于升级所需内容的困惑。mysql_query()
函数和相关的mysql_*()
函数从PHP5.5开始就被弃用,并在PHP7中被删除。
然而,这与PDO
的初始化中的单词mysql
无关。PDO文档中显示的语法是正确的。遗留mysql_*()
函数的使用应该替换为MySQLi,但PDO不受影响。
现在,我不确定你是否真的尝试了旧的PDO代码,但它失败了,或者你只是认为你需要为最佳实践做出改变。但是,如果$row['MAX(rent)']
不适合你,即使是这样,为了清楚起见,你可能只想给它分配一个别名:
foreach ($dbh->query("SELECT MAX(rent) as MaxRent FROM table WHERE PType ='$PType' AND PState = '$state'") as $row) {
$SMR = "" . $row['MaxRent'] . "";
}