猿问

如何获取SQL语句的行数

是否可以获取语句的行数?


我尝试这个


$stmt2 = $pdo->query("SELECT count(*) FROM `participation` 

   WHERE id_evenement = '$id_event' 

   AND id_membre_participation ='$id_membre'");


if ($stmt2 == 0) { 

   echo 'ok'; 

} else { 

   echo 'no';

但我有这个错误:


Notice: Object of class PDOStatement could not be converted to int in C:\wamp64\www\projet\[...] on line 55

no

该声明是正确的,如果我在php我的管理员中尝试以下操作:


SELECT count(*) FROM `participation` WHERE id_evenement = 9 AND id_membre_participation = 1

我有


+----------+

| count(*) |

+----------+

|     1    |

+----------+

如果我更改id_membre_participation为2:


SELECT count(*) FROM `participation` WHERE id_evenement = 9 AND id_membre_participation = 2

+----------+

| count(*) |

+----------+

|     0    |

+----------+

有任何想法吗?


谢谢!


饮歌长啸
浏览 301回答 2
2回答

SMILET

PDO::query返回结果集作为PDOStatement对象,您必须从中获取实际数据。在这种情况下,您只有一个值,可以通过调用进行检索PDOStatement::fetchColumn。试试这个:$stmt2 = $pdo->query("SELECT count(*) FROM `participation`    WHERE id_evenement = '$id_event'    AND id_membre_participation ='$id_membre'");$count = $stmt2->fetchColumn(0);if ($count == 0) {    echo 'ok'; } else {    echo 'no';} 

暮色呼如

是的,您可以fetchColumn用来获取行数$sql = "SELECT count(*) FROM `table` WHERE foo = bar"; $result = $con->prepare($sql); $result->execute(); $number_of_rows = $result->fetchColumn();
随时随地看视频慕课网APP
我要回答