微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – PDO只返回mysql的一半结果

在下面的脚本中,我使用位置偏移来绑定所有参数来处理PDO中的IN子句. $_POST [“group”]是一个数组. Chrome控制台显示表单数据中的数组中有12个值. In Clause中的问号数量也与值的数量相对应.一切似乎都很好.

SELECT a.id,a.likes,a.dislikes from `like_dislike` a 
INNER JOIN `model_no` b ON a.id = b.id 
WHERE b.model_no IN (?,?,?,?,?,?,?,?,?,?,?,?)

但我不知道为什么脚本只能返回六个结果.

0 likes, 0 dislikes
0 likes, 0 dislikes
0 likes, 0 dislikes
0 likes, 0 dislikes
0 likes, 0 dislikes
0 likes, 0 dislikes

我也在PHPmyadmin中运行查询,查询没有问题.
任何人都可以看到绑定过程中是否有任何错误

$dbh = new PDO("MysqL:host=$hostname;dbname=$databasename", $username, $password);
$id_group = $_POST["group"];
$in  = str_repeat('?,', count($id_group) - 1) . '?';    

$sql = "SELECT a.id,a.likes,a.dislikes from `like_dislike` a 
        INNER JOIN `model_no` b ON a.id = b.id WHERE b.model_no IN ($in)";

$users = $dbh->prepare($sql);
$i = 1;
foreach ($id_group as $id) {
  $users->bindValue($i++, $id);
}

$users->execute($id_group);

$rows = $users->fetchAll();


foreach($rows as $row)
{    
 echo "<div id='tid_".$row['id'].">".$row['likes']." likes, ".$row['dislikes']." dislikes</div>";      
}

解决方法:

我想我得到了解决方案,

foreach($rows as $row)
{    
 echo "<div id='tid_".$row['id'].">".$row['likes']." likes, ".$row['dislikes']." dislikes</div>";   
               ^--this quote     ^--you forgot to end here.
}

固定代码

我建议在使用string连接数组/变量时使用{}.它更易读,更容易理解.

 echo "<div id='tid_{$row['id']}'>{$row['likes']} likes, {$row['dislikes']} dislikes</div>";   

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐