Php Pdo行计数错误
我一直在尝试使用作为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 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循环都可以工作,但是行计数方面我有问
<?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)
。它将执行得更好,并且在数据库引擎之间更兼容