PDO 只返回 mysql 的一半结果
Posted
技术标签:
【中文标题】PDO 只返回 mysql 的一半结果【英文标题】:PDO only returns half of the results from mysql 【发布时间】:2014-09-25 14:20:29 【问题描述】:在以下脚本中,我使用位置偏移绑定了所有参数,以处理 PDO 中的IN
子句。 $_POST["group"]
是一个数组。 Chrome 控制台显示表单数据中的数组中有 12 个值。 In 子句中问号的数量也对应于值的数量。一切似乎都很好。
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>";
【问题讨论】:
您在 html 中的输入/选择元素是否包含名称属性为name="group[]"
?
我使用 jQuery load
方法,所以应该没问题。并且控制台显示已经传递了12个值
@Log1cツ "Fell" for your test without the picture... 只是喜欢你的名字.... 也为这个问题 +1
@RedGiant,我不是在询问 jQuery 和所有内容,因为在您的代码中我可以看到您正在读取 POST 方法中的参数,因此,如果您也发布该 HTML 会更有帮助.
@user1986811,谢谢! :)
【参考方案1】:
我想我找到了解决方案,
foreach($rows as $row)
echo "<div id='tid_".$row['id'].">".$row['likes']." likes, ".$row['dislikes']." dislikes</div>";
^--this quote ^--you forgot to end here.
固定代码
我建议在将数组/变量与字符串连接时使用。它会更具可读性和易于理解。
echo "<div id='tid_$row['id']'>$row['likes'] likes, $row['dislikes'] dislikes</div>";
【讨论】:
以上是关于PDO 只返回 mysql 的一半结果的主要内容,如果未能解决你的问题,请参考以下文章