Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从mySQL中的各种表中选择列_Mysql_Select_Join_Multiple Tables - Fatal编程技术网

从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

我有一个从mySQL检索的动态类别列表。当用户单击某个类别时,它会从数据库中加载该特定类别的图像。这是执行此操作的函数:

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注入的信息,因为我还计划对一些字段进行注释。。。