2013-11-23 161 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

我不同意你的看法。那應該是什麼時候? –