将数组绑定到选择查询

时间:2015-09-30 16:06:31

标签: php mysql sql pdo foreach

我尝试在这种情况下绑定一个值数组$ownco在另一个选择查询中,但它不起作用。如何实现它,在第二个查询中检查/传递所有值?

<?php

$hostname = 'localhost';
$user = 'root';
$password = '';
$username = $_COOKIE['username'];
try {
    $dbh = new PDO("mysql:host=$hostname;dbname=searchfood", $user, $password);

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
    $sql = "SELECT id_post
            FROM comments
            WHERE  username = $username
            ORDER BY id DESC"; // oder (longitude between $loo and $lo or latitude  between $laa and $la) versuchen
    if ($res = $dbh->query($sql)) {// need to add this line in your code
        // then after fetchColumn
        $ownco = $res->fetchAll();
    }
} catch (PDOException $e) {
    echo $e->getMessage();
}

$userid = $_COOKIE['userid'];
try {
    $dbh = new PDO("mysql:host=$hostname;dbname=searchfood", $user, $password);

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
    $sql = "SELECT id, autorid, autor, date, longitude, latitude, title, text, town, time
            FROM posts
            WHERE  id = $ownco
            ORDER BY id DESC"; // oder (longitude between $loo and $lo or latitude  between $laa and $la) versuchen
    if ($res = $dbh->query($sql)) {// need to add this line in your code
        // then after fetchColumn
        $resultcom = $res->fetchAll();
    }
} catch (PDOException $e) {
    echo $e->getMessage();
}
?>

2 个答案:

答案 0 :(得分:1)

您的问题存在一些问题。

  • 首先,您接受了无法回答的答案。欺骗规则?
  • 其次,由于错误的SQL语法和缺少准备好的语句,您的第一个查询将永远不会起作用。
  • 第三,$ownco不包含您期望的数据结构。
  • 第四,将数组与PDO绑定是一个非常简单的问题,已在许多答案中进行了解释,甚至在PDO tag wiki中也有解释。
  • 第五,根本不需要第二个查询。相反,您必须在第一个查询中使用JOIN

答案 1 :(得分:0)

更改您的第二个查询,如下所示

$sql = "SELECT id, autorid, autor, date, longitude, latitude, title, text, town, time 
        FROM posts
        WHERE  id in (" . implode(",",$ownco) . ")
        ORDER BY id DESC";