【问题标题】:PDO only returns half of the results from mysqlPDO 只返回 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,谢谢! :)

标签: php html mysql sql pdo


【解决方案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>";   

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 2021-06-29
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 2013-08-10
    相关资源
    最近更新 更多