php - 试图找到一种简单的方法让 PHP 和 Mysql DB 为 PHP5.5 做数学运算(AVG MIN MAX)

标签 php mysql mysqli pdo

我目前使用的是 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/

相关文章:

php - 如何从 preg_replace 中提取数据

php - 在 php 中检索 SQL 日期时间和 POST

mysql - 以下哪个查询被优化/首选

php - mysqli_num_rows 无法在带有 PHP 的 MySQLi 中工作

php - Ajax MySQL "Unexpected token <"

javascript - Codeigniter 中的 tcpdf 不起作用

php - 如何使用php取消设置具有空值的数组?

php - 为什么这个 PDO 语句会默默地失败?

mysql - hadoop mongodb连接器读取数据但作为mysql数据输出

javascript - 使用 Ajax 和 PHP 将文件上传到数据库