Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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
Php SQL语法问题(同一段代码,给了我一个错误!我不明白。)_Php_Mysql_Sql - Fatal编程技术网

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已按预期填充吗?您所做的只是删除了`标记。它们是完全有效的表/数据库名称。