所以我想要做的是,我想返回where子句中的列数。目前这是有效的:
$total = $pdo->query('
SELECT
COUNT(*)
FROM
_TABLENAME_
')->fetchColumn();
echo $total .' Rows Found';
// Outputs 10 if, 10 rows are found.
但是当我尝试使用WHERE LIKE
原因时,它将无效。
$gr = '%'.$_GET['genres'].'%';
$total = $pdo->query('
SELECT
COUNT(*)
FROM
_TABLENAME_
WHERE
genres
LIKE
'.$gr.'
')->fetchColumn();
echo $total . ' Rows Found';
// Outputs 1, even if more are found
但显然这不起作用,当你不是如何制作PDO Execute语句时,我试图这样做:
$gr = '%'.$_GET['genres'].'%';
$sql = 'SELECT COUNT(*) FROM `_TABLENAME_` WHERE genres LIKE :gr ';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':gr', $gr, PDO::PARAM_STR);
$stmt->execute();
$total = $stmt->rowCount();
echo $total . ' Rows Found';
但结果再次只有1。
答案 0 :(得分:1)
正如PHP手册所说:
对于大多数数据库,PDOStatement :: rowCount()不返回 受SELECT语句影响的行数。
相反
使用PDO :: query()发出带有相同的SELECT COUNT(*)语句 将谓词作为预期的SELECT语句,然后使用 PDOStatement :: fetchColumn()来检索将要的行数 被退回然后,您的应用程序可以执行正确的操作。
点击此处:Counting rows returned by a SELECT statement。 在PHP手册中,您可以了解更多用例:)
我希望这有助于您了解行为。