您的SQL语法有错误;检查...正确的语法,以便使用近'" category =

时间:2015-06-05 04:15:06

标签: php mysql

我对更新查询感到有些困惑。我尝试了其他语法,但我仍然遇到相同的错误。

$itemName = mysql_real_escape_string($_POST['itemName']);
$itemDescription = mysql_real_escape_string($_POST['itemDescription']);
$itemCategory = mysql_real_escape_string($_POST['itemCategory']);

if(isset($_POST['itemPrice']))
    $itemPrice = mysql_real_escape_string($_POST['itemPrice']);

$statement = 'update products set "category = ' .
$itemCategory.', price = "'. 
$itemPrice .'", product = "' . 
$itemName . '", description = "' . 
$itemDescription . '" where id = "' . 
$itemId . '"';

if(mysqli_query($db, $statement))
{
    $kittehHasError = false;
    $message = $itemName . " has been updated successfully.";
}
else
{
    $kittehHasError = true;
    $message = "Something went wrong: " . mysqli_error($db);
}

<p><? echo $message ?></p>

我收到的错误是:

  

出了点问题:您的SQL语法出错了;检查   手册,对应右边的MySQL服务器版本   要使用的语法&#39;&#34; category = games,price =&#34; 60.75&#34;,product =   &#34; Wildstar&#34;,description =&#34;正在进行&#39;在第1行

我做错了什么?我设置了断点,所有值都保存数据和正确的数据。所以我不确定为什么查询不起作用。我想也许是因为 description 包含单引号,但是,当添加MySQL_real_escape_string()时,我仍然会收到相同的错误。

2 个答案:

答案 0 :(得分:2)

更改

  $statement = 'update products set "category = ' .
  $itemCategory.', price = "'. 

  $statement = 'update products set category = "'.
  $itemCategory.'", price = "'. 

答案 1 :(得分:0)

您的查询有问题。将您的代码替换为以下代码:

@x = map { $_ =~ s/\0//g; } @x;

$statement = 'update products set category = "' .$itemCategory.'", price = "'. $itemPrice .'", product = "' . $itemName . '", description = "' . $itemDescription . '" where id = "' . $itemId . '"'; 之前你有一个不必要的逗号。我认为它应该属于价值部分。

尝试以上代码。