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 的一半结果的主要内容,如果未能解决你的问题,请参考以下文章

PDO 不从 mysql 查询返回结果

从 MySQL 只得到一半的结果

mysql返回修改后

pdo连接mysql操作方法

PHP PDO:存储过程返回空结果

mysql“日期之间”查询在 phpmyadmin 中有效,但 PDO 不返回任何内容