在MySQL中搜索数组的一部分

时间:2014-04-11 19:56:43

标签: mysql pdo

我正试图从列中列出一系列标题' list'然后获取所述列表上每个标题的详细信息。

//Get list
$r=$link->prepare('SELECT list FROM lists WHERE user=? LIMIT 1');
$r->bindValue(1,$user,PDO::PARAM_STR);
$r->execute();
$list=$r->fetchAll(PDO::FETCH_ASSOC);

//See how many titles the list has  
$list_length=count($list);

//Get details for every title   
for($i=0;$i<$list_length;$i++)
{
    $r2=$link->prepare('SELECT * FROM details WHERE title=?');
    $r2->bindValue(1,$list[$i],PDO::PARAM_STR);
    $r2->execute();
    $details=$r2->fetchAll(PDO::FETCH_ASSOC);
}
return json_encode($details);

因为我只是回复[]

我也得到Notice: Array to string conversion in $r2->bindValue(1,$list[$i],PDO::PARAM_STR);

1 个答案:

答案 0 :(得分:1)

  1. 您必须学习阅读代码,而不是要求其他人为您完成。

    SELECT list FROM lists WHERE user=? LIMIT 1
    

    看看这个查询。它看起来像是可以返回数组的行吗?

  2. 学习SQL。特别是JOINS
  3. 这里是代码

    $sql = 'SELECT details.*  FROM lists JOIN details on title=list WHERE user=?';
    $stm = $link->prepare($sql);
    $stm->execute([$user]);
    json_encode($stm->fetchAll(PDO::FETCH_ASSOC));
    

    只需四行