我正在开发一个网站,其中有一个从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我不明白我在哪里弄错了。
答案 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