2013-12-08 41 views
0

我想一個用戶ID上傳到我的食譜網站的IM做一個單項目數據庫,問題與MySQL查詢似乎無法找出原因

插入代碼是可以正常使用,直到我加入插入語句爲$_SESSION

這是我的代碼看起來像現在:

$query = "INSERT INTO `recipename` (mealname,ingredients,hours,minutes,recipe,imagepath,userID)VALUES ('$mealname', '$ingredients','$hours','$minutes','$recipe','$image'," . $_SESSION['userid'] . ")"; 

mysqli_query($db_server, $query) or die("Insert failed. ". mysqli_error($db_server)); 

回聲:

INSERT INTO recipename(mealname,ingredients,hours,minutes,recipe,imagepath,userID) VALUES ('misbah', 'ss','1','1','s','','') 

==================== ================================================== == 這是我不斷收回的錯誤..

插入失敗。你的SQL語法有錯誤;檢查對應於你的MySQL服務器版本的在線使用近「)」正確的語法手冊1

我還是新的代碼,所以敢用它難倒..

+0

這是錯誤**插入失敗。你的SQL語法有錯誤;檢查與你的MySQL服務器版本相對應的手冊,在第1行'''附近使用正確的語法。 – misdigest

+0

插入時$ _SESSION ['userid']的值是多少? –

+0

@misdigest從外觀來看,你將所有東西都看作是某種字符類型。什麼是你的列的實際數據類型?此外,確保一切都逃脫。一個'或'在你的字符類型可能會拋出你的查詢。使用預處理語句。 – Zarathuztra

回答

0

是會話[」 userid']只是數字?如果它還包含文本,那麼您的查詢在其之前和之後缺少引號,就像其他變量一樣。

但是,在此之前,嘗試回顯$_SESSION['user_id'],然後再嘗試查詢以查看它是否有效。如果是這樣,那麼就像我之前說過的那樣,加上引號。並且我們發現您的查詢不起作用,因爲您從來沒有在您的Session標記中擁有一個值,因此需要使用引號來糾正您的陳述的結尾。現在的問題是找出你的$_SESSION['user_id']值在哪裏或發生了什麼。

$query = "INSERT INTO `recipename` (mealname,ingredients,hours,minutes,recipe,imagepath,userID)VALUES ('$mealname', '$ingredients','$hours','$minutes','$recipe','$image','" . $_SESSION['userid'] . "')"; 
+0

$ _SESSION ['userid']只是數字,會嘗試添加引號並回顯$ _SESSION ['userid'] – misdigest

+0

我想嘗試的另一件事是在將它發送到mysqli'echo $ query'之前回應您的查詢,然後在此處回覆它所說的內容。上面的人完全複製了我所說的HAHAH –

+0

我已經添加了引號,這已經解決了這個問題,所以謝謝你,但它仍然返回數據庫上的空userid值.. – misdigest

0

你可以試試這個,用引號括起來的userid值。如果Userid列的數據類型爲int,那麼您需要確保您在會話處理程序值中具有值,並且如果您的會話userid值不是整數,那麼它也可能會給出錯誤。

 $query = "INSERT INTO `recipename` (mealname,ingredients,hours,minutes,r ecipe,imagepath,userID)VALUES ('$mealname', '$ingredients','$hours','$minutes','$recipe','$image','" . $_SESSION['userid'] . "')";