0

我没有对这段代码做任何事情,它以前工作过一次。现在它给了我这个错误。

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";
 }

老实说,我无法理解发生了什么变化以及为什么会出现错误。请帮我。

4

3 回答 3

2

从您的错误的外观来看,您的一个变量包含一个单引号,很可能cat

根据http://php.net/manual/en/function.mysql-escape-string.php, mysql_escape_string 函数已被弃用并替换为http://www.php.net/manual/en/function.mysql-真正的转义字符串.php

此外,它们仅替换"为转义\"的 ,因此给出了查询。此外,您不应引用数字,因此请删除任何 INTEGER 字段周围的引号。这是因为包含数字的字符串并不总是与数字本身相同。这给

$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 ());

此外,我希望所有输入都经过检查/清理,包括数字(http://bobby-tables.com/

编辑以下评论 您的“猫”值是数字,默认为空字符串,因此需要清理,即

$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 ());
于 2012-04-19T07:38:21.440 回答
0

试试这个 :

$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."' "
)
于 2012-04-19T08:01:40.820 回答
-1

我认为您在以下内容后缺少逗号:

`cat` = ''

编辑:错误消息中似乎WHERE缺少 ,因此看起来好像之前需要另一个逗号

`marka`.`id` ='39'
于 2012-04-19T07:33:02.607 回答