PHP的SQL查询与数组字段

时间:2014-08-03 15:50:47

标签: php mysql json

我正在开发一个网站,其中有一个从mySQL数据库获取数据的ajax请求 为简化问题,假设我有以下数据库结构:

表格对象
ID_OBJECT(int)
NAME_OBJECT(varchar)

表格图片
ID_OBJECT(int) - >来自OBJECT的外键
URL(varchar)

因此每个对象都可以附加0到n个图像。 我一直在编写请求数据的php脚本。

为了再次简化,假设我想要获得所有具有所有图像的对象(但是将来我也希望得到任何具有所有图片的特定对象)

我写过这个PHP脚本:

$sql = "select 
               ID_OBJECT,
               NAME_OBJECT,
               URL
          from 
               OBJECT,
               IMAGE
          where 
               OBJECT.ID_OBJECT  = IMAGE.ID_OBJECT";

$statement=$db->prepare($sql);
$statement->execute();
$result=$statement->fetchAll(PDO::FETCH_ASSOC);
header('Content-Type: application/json; charset=utf-8');
echo json_encode($result);

我遇到的问题是,只要在sql查询中添加“URL”,“IMAGE”和where语句,它就不会回显任何东西。(我的数据库中有几个对象和图像,其中有proids ID我不明白我在哪里弄错了。

2 个答案:

答案 0 :(得分:2)

ID_OBJECT在两个表中,因此MySQl不知道要显示哪一个。尝试指定如下:

select 
           OBJECT.ID_OBJECT,
           OBJECT.NAME_OBJECT,
           IMAGE.URL
      from 
           OBJECT,
           IMAGE
      where 
           OBJECT.ID_OBJECT  = IMAGE.ID_OBJECT

答案 1 :(得分:1)

显然您的查询中有错误。您应该从第一个或第二个表中设置所需的ID_OBJECT字段。 重写您的查询,如:

select 
       o.ID_OBJECT,
       o,NAME_OBJECT,
       i.URL
from 
       OBJECT o,
       IMAGE i
where 
       o.ID_OBJECT  = i.ID_OBJECT