试图为PHP和MysqlDB找到一种简单的方法来为PHP5.5做数学运算(AVG MIN MAX)


Trying to find an easy way for PHP and Mysql DB to do math (AVG MIN MAX) for PHP5.5

我目前有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'] . "";
}