我目前使用的是 PHP 5.3,需要至少升级到 PHP 5.5/5.6。我有一个页面发布了出租属性(property)的平均值。有一段时间我没有使用 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_*()
函数从 PHP 5.5 开始被弃用,并在 PHP7 中被删除。
但是,这与PDO
初始化中的mysql
这个词无关。显示的语法 here in PDO's documentation是正确的。遗留 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'] . "";
}
关于php - 试图找到一种简单的方法让 PHP 和 Mysql DB 为 PHP5.5 做数学运算(AVG MIN MAX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34572975/