我有一个错误,需要仔细查看mysql语句
即时消息:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行的near'和articles.cat\u main=articles\u cat\u main.id\u articles\u cat\u main'的正确语法 我看不到任何明显的东西。。这是漫长的一天我有一个错误,需要仔细查看mysql语句,mysql,Mysql,即时消息:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行的near'和articles.cat\u main=articles\u cat\u main.id\u articles\u cat\u main'的正确语法 我看不到任何明显的东西。。这是漫长的一天 谢谢您是否在“文章目录”中有一个名为“id文章目录”的字段。如果没有,那么你有一些东西要删除,这应该可以解决它。你在“articles\u cat\u main”中有一个名为“id\u articles\u ca
谢谢您是否在“文章目录”中有一个名为“id文章目录”的字段。如果没有,那么你有一些东西要删除,这应该可以解决它。你在“articles\u cat\u main”中有一个名为“id\u articles\u cat\u main”的字段吗。如果没有,那么您有一些东西要删除,这应该可以解决它。您需要将其设置为一个
连接
以包含第二个表articles\u cat\u main
。因此:
$query_article = sprintf("SELECT * FROM articles, articles_cat_main
WHERE articles.id = %s
AND articles.cat_main = articles_cat_main.id_articles_cat_main",
$colname_article);
您需要将其设置为一个
JOIN
,以包含第二个表articles\u cat\u main
。因此:
$query_article = sprintf("SELECT * FROM articles, articles_cat_main
WHERE articles.id = %s
AND articles.cat_main = articles_cat_main.id_articles_cat_main",
$colname_article);
编辑后
如果变量是数字,只需concat而不用sprintf
$query_nextprev = "SELECT * FROM articles JOIN articles_cat_main ON articles.cat_main = articles_cat_main.id_articles_cat_main WHERE articles.active = 'y' ORDER BY articles_cat_main.name_cat_main, articles.`order`";
但在任何一种情况下,如果变量为空或不包含任何内容,则查询将变为空
$query_article = "
SELECT * FROM articles, articles_cat_main
WHERE articles.id = " . $colname_article . "
AND articles.cat_main = articles_cat_main.id_articles_cat_main";
所以它出错了
起初的
很明显,您展示的PHP是而不是正在运行的PHP
它有一个
其中articles.cat_main
错误消息已被删除
靠近“和articles.cat_main”
编辑后,检查您的代码以查看您真正运行的是什么
WHERE articles.id = AND articles.cat_main
如果变量是数字,只需concat而不用sprintf
$query_nextprev = "SELECT * FROM articles JOIN articles_cat_main ON articles.cat_main = articles_cat_main.id_articles_cat_main WHERE articles.active = 'y' ORDER BY articles_cat_main.name_cat_main, articles.`order`";
但在任何一种情况下,如果变量为空或不包含任何内容,则查询将变为空
$query_article = "
SELECT * FROM articles, articles_cat_main
WHERE articles.id = " . $colname_article . "
AND articles.cat_main = articles_cat_main.id_articles_cat_main";
所以它出错了
起初的
很明显,您展示的PHP是而不是正在运行的PHP
它有一个
其中articles.cat_main
错误消息已被删除
靠近“和articles.cat_main”
检查您的代码以查看您真正运行的是什么
WHERE articles.id = AND articles.cat_main
并用名为$colname\u article的变量的内容替换%s。基于该变量的名称,我认为它不包含整数,可以不加引号插入其中
如果它为空或包含不带引号的字符串,将导致您看到的语法错误
请注意,这类动态SQL语句被删减为具有漏洞
并用名为$colname\u article的变量的内容替换%s。基于该变量的名称,我认为它不包含整数,可以不加引号插入其中
如果它为空或包含不带引号的字符串,将导致您看到的语法错误
请注意,这类动态SQL语句会被删减以具有漏洞。无论文章中的值是什么,都会导致您的问题。该值很可能不是数字,但在查询中mysql希望它是数字或列名。该值很可能是一个字符串。或者它是空的 你可以这样引用:
SELECT * FROM articles, articles_cat_main
WHERE articles.id = %s AND ...
如果你希望它是一个字符串。或者,如果您希望它是一个数字,您应该使用%d
而不是%s
,因为如果您有一个数字以外的内容,您将得到一个PHP警告(但查询仍将失败)
另外,您当前的设置可能会引发SQL注入攻击。您可能有其他代码可以防止这种情况,但如果没有,您应该使用
mysql\u real\u escape\u string()转义$colname\u article
或者更好的方法是使用PDO和占位符,它们将执行与您在这里使用sprintf
相同的替换并处理转义。无论$colname\u文章中的值是什么,都会导致您的问题。该值很可能不是数字,但在查询中mysql希望它是数字或列名。该值很可能是一个字符串。或者它是空的
你可以这样引用:
SELECT * FROM articles, articles_cat_main
WHERE articles.id = %s AND ...
如果你希望它是一个字符串。或者,如果您希望它是一个数字,您应该使用%d
而不是%s
,因为如果您有一个数字以外的内容,您将得到一个PHP警告(但查询仍将失败)
另外,您当前的设置可能会引发SQL注入攻击。您可能有其他代码可以防止这种情况,但如果没有,您应该使用mysql\u real\u escape\u string()转义$colname\u article
或者更好的方法是使用PDO和占位符,它们将执行与您在这里使用sprintf
相同的替换并处理转义。错误消息不属于您发布的sql语句。看起来查询和错误消息不属于彼此-MySQL抱怨的部分不在你提出的问题。您确定这正是触发此错误的查询吗?错误消息不属于您发布的sql语句。看起来查询和错误消息不属于彼此-MySQL抱怨的部分不在您提供的查询中。你确定这正是触发此错误的查询吗?这是一个语法错误,所以MySQL到目前为止还没有查看表的结构。那么下一个WHERE条件中的“id\u articles\u cat\u main”呢?同样的事情还是故意的?这是一个语法错误,所以MySQL还没有看到表的结构。那么下一个WHERE条件中的“id\u articles\u cat\u main”呢?同样的事情还是故意的?是的,我发错代码了。我用正确的、错误的代码进行了更新。谢谢,我同意你的看法。忘了质疑前提并询问变量是否已定义。抢手货是的,我发错代码了。我用正确的、错误的代码进行了更新。谢谢,我同意你的看法。忘了质疑前提并询问变量是否已定义。抢手货我发错了代码行。我已经用那个坏的更新了。谢谢。我发错代码了。我已经用b更新了它