2013-11-23 152 views
-2

我有以下的PHP代码查询我的DB:SQL查询失败

<?php 

include 'db_connect.php'; 

if($_SESSION['username'] != "admin") 
{ 
    header('Location: index.php'); 
} 

$item_id = $_POST['item_id']; 
$item_name = $_POST['item_name']; 
$category = $_POST['category']; 
$description = $_POST['description']; 
$price = $_POST['price']; 
$options = $_POST['options']; 

echo $item_id . $item_name . $category . $description . $price . $options; 
#the above line proves that everything is being posted properly 

$query = "UPDATE ConnectionsMenu SET item_name=$item_name, category=$category, description=$description, price=$price, options=$options WHERE item_id=$item_id"; 

$result = mysqli_query($db, $query); 

if(!$result) 
{ 
    die ("Invalid data entry: " . mysqli_error($db)); 
} 

?> 

,但我得到了以下错误: 您在您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以便在第1行的'Drinks,description = sdfsd,price = 3333,options = WHERE item_id = 98'处使用正确的语法。

我不确定发生了什么问题在这里......我已经在另一页成功地使用了完全相同的语法。任何建议将不胜感激!

+2

你应该学会1. SQL语法。 2.编写报表。 –

+0

仔细阅读错误信息,特别是'options = WHERE'。 – 2013-11-23 19:27:48

+3

只有所有字段都是数字,或者变量本身已包含单引号字符串,完全相同的语法才有效。无论哪种方式,你使用的是MySQLi,所以[开始了解准备好的语句](http://php.net/manual/en/mysqli.prepare.php)以避免此问题(以及通过SQL的相关安全问题注入) –

回答

-2

你缺乏报价:

$query = "UPDATE ConnectionsMenu 
      SET item_name='$item_name', 
       category='$category', 
       description='$description', 
       price='$price', 
       options='$options' 
      WHERE item_id=$item_id"; 
+0

这个答案有什么问题? –

+2

这是错误的。它甚至不遵循最小的SQL语法,更不用说好的做法。 –

+0

我不同意你的看法。那应该是什么时候? –