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

エラーの外観から、変数の1つに一重引用符が含まれている可能性があります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 に答える