PHP PDO返回错误的列数

时间:2016-09-29 16:48:48

标签: php mysql pdo

所以我想要做的是,我想返回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。

1 个答案:

答案 0 :(得分:1)

正如PHP手册所说:

  

对于大多数数据库,PDOStatement :: rowCount()不返回   受SELECT语句影响的行数。

相反

  

使用PDO :: query()发出带有相同的SELECT COUNT(*)语句   将谓词作为预期的SELECT语句,然后使用   PDOStatement :: fetchColumn()来检索将要的行数   被退回然后,您的应用程序可以执行正确的操作。

点击此处:Counting rows returned by a SELECT statement。 在PHP手册中,您可以了解更多用例:)

我希望这有助于您了解行为。