Php Pdo行计数错误

Php Pdo行计数错误,php,mysql,pdo,rowcount,Php,Mysql,Pdo,Rowcount,我一直在尝试使用作为PDO的一部分的行计数函数。。我使用for each循环遍历一个损坏零件的列表,然后计算我需要订购的每个零件的数量,但使用下面的代码它不起作用,我收到了这个错误 “致命错误:在第15行的W:\xampp\htdocs\ICT\u Devices\damage\u log\damage\u parts\u find.php中对非对象调用成员函数rowCount()” 任何帮助都会很棒,我的php就在下面,我知道pdo连接文件和for-each循环都可以工作,但是行计数方面我有问

我一直在尝试使用作为PDO的一部分的行计数函数。。我使用for each循环遍历一个损坏零件的列表,然后计算我需要订购的每个零件的数量,但使用下面的代码它不起作用,我收到了这个错误

“致命错误:在第15行的W:\xampp\htdocs\ICT\u Devices\damage\u log\damage\u parts\u find.php中对非对象调用成员函数rowCount()”

任何帮助都会很棒,我的php就在下面,我知道pdo连接文件和for-each循环都可以工作,但是行计数方面我有问题

<?php
define('INCLUDE_CHECK',true);
require '../lib/connect/PDO_connect.php';

foreach($db->query("SELECT * FROM `damage_list`") as $damage_part) {
$parts=$damage_part['Damage'];  
$stmt = $db->query('SELECT * FROM damage_log where damage=$parts');

$row_count = $stmt->rowCount();
echo $parts. "=".$row_count;
echo "<br>";


}


?>

因为

因此,您的查询实际上如下所示:

SELECT * FROM damage_log where damage=$parts
因此发生错误,
$stmt
FALSE

使用双引号可能会解决您的问题

另外,由于您在SQL语句中没有引用
$parts
,请确保
$parts
始终是一个数字或任何其他不需要引用的类型。

因为

因此,您的查询实际上如下所示:

SELECT * FROM damage_log where damage=$parts
因此发生错误,
$stmt
FALSE

使用双引号可能会解决您的问题


另外,由于SQL语句中没有引用
$parts
,请确保
$parts
始终是一个数字或任何其他不需要引用的类型。

错误消息告诉您$stmt不是对象


这可能是因为您的查询不正确。。。
$parts
不会在单引号内解释,因此会在查询中逐字解释。

错误消息告诉您$stmt不是对象


这可能是因为您的查询不正确。。。
$parts
不在单引号内解释,因此在查询中是字面意义上的。

您应该在循环之前准备一个参数化查询,并在循环中绑定
$parts
,然后执行查询。此外,如果您只在进行行计数,请改用
选择计数(1)
。它将执行得更好,并且更兼容数据库引擎。您应该在循环之前准备一个参数化查询,并在循环中绑定
$parts
,然后执行查询。此外,如果您只在进行行计数,请改用
选择计数(1)
。它将执行得更好,并且在数据库引擎之间更兼容