我正在从SQL转换为PDO,在此声明之前一切都很顺利。
我的SQL做它应该做的事情并且不输出消息“此用户没有私人图像”。但由于某种原因,当更改为PDO时,不应显示相同的消息。
有什么想法吗?
原始SQL:
$result = mysql_query("SELECT * FROM tbl_private_photos WHERE profile = $usernum AND photo_deleted != 'Yes' LIMIT 1");
if (mysql_num_rows($result)!==1) { die("This user has no private images");}
我的PDO:
$sql = "SELECT * FROM tbl_private_photos WHERE profile = :usernum AND photo_deleted != 'Yes' LIMIT 1";
$q = $conn->prepare($sql); // the default way of PDO to manage errors is quite the same as `or die()` so no need for that
$q->bindValue(':usernum',$usernum,PDO::PARAM_INT);
$q->execute();
if($r = $q->fetch(PDO::FETCH_ASSOC)!==1)
{
die("This user has no private images");
}
答案 0 :(得分:0)
PDO::fetch()
会返回array
或false
。您不希望将获取结果显式地与整数1进行比较,然后将其分配给变量 - 它始终为true
,因为1 !== array()
始终为true,1 !== false
为总是如此。
相反,您应该看看结果集是否为空或false
。
请改为尝试:
$r = $q->fetch(PDO::FETCH_ASSOC);
if(empty($r))
{
die("This user has no private images");
}