Php SQL语法问题(同一段代码,给了我一个错误!我不明白。)
我没有做任何关于这个代码,它曾经工作过一次。现在它给了我这个错误Php SQL语法问题(同一段代码,给了我一个错误!我不明白。),php,mysql,sql,Php,Mysql,Sql,我没有做任何关于这个代码,它曾经工作过一次。现在它给了我这个错误 Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' `main` = 'yes', `cat` = '' `marka`.`id` ='39'' at line 1 我的php中的代码如下 $upd
Error: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use
near ' `main` = 'yes', `cat` = '' `marka`.`id` ='39'' at line 1
我的php中的代码如下
$updatenews = mysql_query(
"UPDATE `newcnlco_atakomdb`.`marka`
SET `title` = '".mysql_escape_string($title)."',
`name` = '".mysql_escape_string($name)."',
`text` = '".mysql_escape_string($text)."',
`url` = '".mysql_escape_string($url)."',
`main` = '".mysql_escape_string($main)."',
`cat` = '".mysql_escape_string($cat)."'
WHERE `marka`.`id` ='".$markaid."'"
)
or die ('Error: '.mysql_error ());
if($updatenews) {
echo "<br/>";
echo '<div id="alert">Marka degisildi!</div>';
} else {
echo "error 1";
}
$updatenews=mysql\u查询(
“更新`newcnlco_atakomdb`.`marka`
设置“title`=”.mysql\u escape\u字符串($title)。“,
`名称“=”.mysql\u转义\u字符串($name)。“,
`文本“=”.mysql\u转义\u字符串($text)。“,
`url`='.mysql\u转义\u字符串($url)。“,
`main“=”.mysql\u escape\u字符串($main)。“,
`cat`='.mysql\u escape\u字符串($cat)。“'
其中'marka`.'id`='“$markaid.”
)
或者死('Error:'.mysql_Error());
如果($updatenews){
回声“
”;
回音“Marka degisildi!”;
}否则{
回显“错误1”;
}
老实说,我无法理解是什么改变了,为什么我会出错。请帮帮我。我想你在以下内容后漏掉了一个逗号:
`cat` = ''
编辑:它显示错误消息中缺少的,因此看起来好像需要另一个逗号
`marka`.`id` ='39'
从错误的外观来看,其中一个变量包含一个引号,很可能是cat
根据,mysql_escape_string函数已被弃用并替换为
此外,它们仅将“
替换为转义的\”
,因此这就给出了查询。此外,您不应该引用数字,因此删除任何整数字段周围的引号。这是因为包含数字的字符串并不总是与数字本身相同。这给
$updatenews = mysql_query('
UPDATE `newcnlco_atakomdb`.`marka` SET
`title` = "'.mysql_real_escape_string ($title).'",
`name` = "'.mysql_real_escape_string ($name).'",
`text` = "'.mysql_real_escape_string ($text).'",
`url` = "'.mysql_real_escape_string ($url).'",
`main` = "'.mysql_real_escape_string ($main).'",
`cat` = "'.mysql_real_escape_string ($cat).'"
WHERE `marka`.`id` ='.$markaid
) or die ('Error: '.mysql_error ());
此外,我希望检查/清理所有输入,包括数字()
编辑以下注释您的“cat”值是数字,默认为空字符串,因此需要清理,即
$cat = (is_numeric($cat))?$cat:0;
$updatenews = mysql_query('
UPDATE `newcnlco_atakomdb`.`marka` SET
`title` = "'.mysql_real_escape_string ($title).'",
`name` = "'.mysql_real_escape_string ($name).'",
`text` = "'.mysql_real_escape_string ($text).'",
`url` = "'.mysql_real_escape_string ($url).'",
`main` = "'.mysql_real_escape_string ($main).'",
`cat` = '.$cat.'
WHERE `marka`.`id` ='.$markaid
) or die ('Error: '.mysql_error ());
试试这个:
$updatenews = mysql_query(
" UPDATE newcnlco_atakomdb.marka
SET title = '".mysql_escape_string($title)."',
name = '".mysql_escape_string($name)."',
text = '".mysql_escape_string($text)."',
url = '".mysql_escape_string($url)."',
main = '".mysql_escape_string($main)."',
cat = '".mysql_escape_string($cat)."'
WHERE marka.id ='".$markaid."' "
)
它是前面的最后一个,在哪里,它需要逗号吗?不,`cat`='
是最后一个赋值-只有在同一语句后面有更多赋值时才需要。请查看错误消息:`main`='yes',cat
='marka
id
='39'`您能发布运行时生成的查询字符串吗?这是编写/执行查询的可怕方式。使用事先准备好的语句,它们会更好、更清晰。您是否尝试过添加代码>在“$markaid.”
之后(在最后一个“”
之前)“?@juergend我不太明白如何满足你的要求?Sorry@MarkBannister我这样做了,使整个过程停止工作。请提供每个$variable的值,这些$variable产生错误$title-trying$name-trying$text-trying$url-www.trying.com$main-yes$cat-empty*,因为它是一个主类别ory db将此0输入为默认值这是您的问题,您需要指定cat=0
或cat=NULL
(无引号),0首选在代码之前,$cat=$\u POST['category']
并且在表单上,您声明您输入的是空的。您确定$\u POST已按预期填充吗?您所做的只是删除了`标记。它们是完全有效的表/数据库名称。