从mySQL中的各种表中选择列
我有一个从mySQL检索的动态类别列表。当用户单击某个类别时,它会从数据库中加载该特定类别的图像。这是执行此操作的函数:从mySQL中的各种表中选择列,mysql,select,join,multiple-tables,Mysql,Select,Join,Multiple Tables,我有一个从mySQL检索的动态类别列表。当用户单击某个类别时,它会从数据库中加载该特定类别的图像。这是执行此操作的函数: function getImages($categoryID) { return json_encode(select("SELECT * FROM images WHERE categoryID=$categoryID")); } 现在,我还想再次从“categories”表中检索类别名称(将所选类别的名称包含在页面的其他部分中)。我试着这样做: function get
function getImages($categoryID)
{
return json_encode(select("SELECT * FROM images WHERE categoryID=$categoryID"));
}
现在,我还想再次从“categories”表中检索类别名称(将所选类别的名称包含在页面的其他部分中)。我试着这样做:
function getImages($categoryID)
{
return json_encode(select(
"SELECT categories.categoryName, images.imageFileName, images.imageHeader
FROM images JOIN categories
ON categories.categoryID = images.categoryID
WHERE categoryID=$categoryID"));
}
但那不起作用,现在我连照片都没有
如何执行此操作?SQL查询中存在错误,categoryID不明确。尝试:
SELECT
categories.categoryName,
images.imageFileName,
images.imageHeader
FROM
images
JOIN
categories on categories.categoryID = images.categoryID
WHERE
categories.categoryID=$categoryID;
SQL查询中有错误,categoryID不明确。尝试:
SELECT
categories.categoryName,
images.imageFileName,
images.imageHeader
FROM
images
JOIN
categories on categories.categoryID = images.categoryID
WHERE
categories.categoryID=$categoryID;
在WHERE子句中,categoryID是不明确的
WHERE categoryID=$categoryID
因为您有两个categoryID表,所以需要确定应该查看哪一个表
WHERE categories.categoryID=$categoryID
<> P>为了让你自己的生活更容易,你可能想考虑混淆你的表,比如:
SELECT c.categoryName, i.imageFileName, i.imageHeader
FROM images i
JOIN categories c ON c.categoryID = i.categoryID
WHERE c.categoryID=$categoryID
还有,你是用哪种语言发展的?如果这是一个Web应用程序,您可能需要考虑规避$CythyID以防止SQL注入。 < P>在您的WHERE子句中,CythyId是模棱两可的。< /P>
WHERE categoryID=$categoryID
因为您有两个categoryID表,所以需要确定应该查看哪一个表
WHERE categories.categoryID=$categoryID
<> P>为了让你自己的生活更容易,你可能想考虑混淆你的表,比如:
SELECT c.categoryName, i.imageFileName, i.imageHeader
FROM images i
JOIN categories c ON c.categoryID = i.categoryID
WHERE c.categoryID=$categoryID
还有,你是用哪种语言发展的?如果这是一个Web应用程序,您可能需要考虑规避$CythyId以防止SQL注入。 < P>我认为您必须在您的<代码>中限定字段,其中具有表名的子句,即
WHERE image.categoryID=$categoryID
数据库引擎不知道您指的是两个categoryID字段中的哪一个。如果您再次遇到类似的问题,您应该在MySQL命令行上测试查询。在那里您会收到一条错误消息,这对修复错误非常有帮助。我认为您必须使用表名限定
WHERE
子句中的字段,即
WHERE image.categoryID=$categoryID
数据库引擎不知道您指的是两个categoryID字段中的哪一个。如果您再次遇到类似的问题,您应该在MySQL命令行上测试查询。在这里,您会收到一条错误消息,这对修复错误非常有帮助。重新整理已说过的内容,尝试左连接,以便未分类的图像不会被过滤掉,并使用转义,如以下所示:
$query = "SELECT c.categoryName, i.imageFileName, i.imageHeader
FROM images i
LEFT JOIN categories c
ON c.categoryID = i.categoryID
WHERE c.categoryID= " . intval($categoryID) . ";"
重新整理已经说过的内容,尝试左连接,以便未分类的图像不会被过滤掉,并使用转义,如以下所示:
$query = "SELECT c.categoryName, i.imageFileName, i.imageHeader
FROM images i
LEFT JOIN categories c
ON c.categoryID = i.categoryID
WHERE c.categoryID= " . intval($categoryID) . ";"
其中categoryID…
不明确。请尝试WHERE categories.categoryID…
WHERE categoryID…
不明确。请尝试WHERE categories.categoryID…
非常感谢!是的,成功了,现在我得到了类别名称和图片!我用PHP和JS开发。是的,这是为了网络。虽然我不认为用户会看到$categoryID部分,但当他们单击链接时,他们会看到一个JS代码,如:javascript:getImages(4),其中getImages是调用API.php的函数,BusinessLogic.php调用API.php,BusinessLogic.php使用SELECT语句保存我的getImages()函数。但我当然想了解更多关于SQL注入的信息,因为我还计划在字段中添加一些注释…非常感谢!是的,成功了,现在我得到了类别名称和图片!我用PHP和JS开发。是的,这是为了网络。虽然我不认为用户会看到$categoryID部分,但当他们单击链接时,他们会看到一个JS代码,如:javascript:getImages(4),其中getImages是调用API.php的函数,BusinessLogic.php调用API.php,BusinessLogic.php使用SELECT语句保存我的getImages()函数。但我当然想知道更多关于SQL注入的信息,因为我还计划对一些字段进行注释。。。