MySQL计数匹配行的数量始终返回1

时间:2014-02-13 17:14:06

标签: php mysql

我在mySQL中检查了下面的SQL,它返回了用户拥有的正确产品数量。我正在尝试将语句移动到PHP中,以根据产品计数执行条件代码。然而,回声总是返回1.我错过了什么?

$sql = "select count(product_id) from dap_users_products_jn where product_id not in(13,34) and user_id = 1";
$stmt = $dap_dbh->prepare($sql);
$stmt->execute();
$stmt = $stmt->rowCount();
echo "the product count is: ".$stmt;

2 个答案:

答案 0 :(得分:3)

使用COUNT()时,您将始终返回一行,因为即使COUNT()的结果为零,您也必须获得结果集。或者你怎么知道结果是什么?如果您想要COUNT()的结果,则需要将查询结果视为正常,然后检查COUNT()操作的值。

$sql = "select count(product_id) AS prod_count from dap_users_products_jn where product_id not in(13,34) and user_id = 1";
$stmt = $dap_dbh->prepare($sql);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_OBJ);
echo "the product count is: ".$result->prod_count;

答案 1 :(得分:1)

你应该做的是,获取专栏。 PDO 具有获取列的 fetchColumn 函数。您应该使用它而不是$stmt->rowCount()

$sql = "select count(product_id) from dap_users_products_jn where product_id not in(13,34) and user_id = 1";
$stmt = $dap_dbh->prepare($sql);
$stmt->execute();
$stmt = $stmt->fetchColumn();
echo "the product count is: ".$stmt;

由于 SQL 已经提取了行数,为什么要使用PDO的rowCount()?