我在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;
答案 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()?