2014-10-29 143 views
0

我一直在嘗試使用特定查詢將數據添加到表中。在PHPMyAdmin我一直在使用:SQL查詢不能在PHP中工作,但在SQL中工作

UPDATE member_food SET food_id ='5' WHERE member_id='5' AND food_type='breakfast' 

這個工程,但是當我嘗試在PHP中實現它。它改變了food_id爲1

enter image description here

這是我的PHP代碼:

$sql_breakfast1 = "UPDATE member_food SET food_id ='$breakfast1' WHERE member_id='$id' AND food_type='breakfast'"; 
if ($mysqli->query($sql_breakfast1) === TRUE) { 
echo "Query: " . $sql_breakfast1; 
} else { 
    echo "Query: " . $sql_breakfast1 . "<br> Error: " . $mysqli->error; 
} 

這裏是我的結果時,我贊同查詢:

Query: UPDATE member_food SET food_id ='8' WHERE member_id='5' AND food_type='breakfast'

確認一下,我可以發送數據到表,如果我沒有與部分,它的工作。所以這個工程:

Query: UPDATE member_food SET food_id ='8' WHERE member_id='5'

我該如何調試這種情況?解決這個問題的最好方法是什麼?

+0

有什麼錯誤 - 消息? – 2014-10-29 12:09:53

+1

轉儲'$ breakfast1',看看裏面有什麼? – 2014-10-29 12:09:57

+0

@ 92_egdeH我發佈了。沒有錯誤。它認爲它發佈了正確的值,而是將food_id更改爲1. – 2014-10-29 12:11:15

回答

2

不要直接在查詢中使用php變量。 準備和綁定變量

另請參閱服務器錯誤日誌或在開發模式中設置錯誤信息顯示,以便您直接在瀏覽器中看到任何通知或錯誤。

更新

不要在綁定參數中使用字符串。

嘗試像這樣:

$sql_breakfast1 = "UPDATE member_food SET food_id =? WHERE member_id=? AND food_type=?"; 
stmt = $mysqli->prepare($sql_breakfast1); 


if (false===$stmt) { 
    die($mysqli->error); 
} 
$sis = 'sis'; 
$strBreakFast = 'breakfast'; 
$rc = $stmt->bind_param($sis, $breakfast1, $id, $strBreakFast); 

if (false===$rc) { 
    die($stmt->error); 
} 

$rc = $stmt->execute(); 

if (false===$rc) { 
    die($stmt->error); 
} 

$stmt->close() 
+0

>好吧,我只是點擊它的字符串整數字符串...然而我得到這個錯誤:致命錯誤:不能通過引用傳遞參數4。 這是我的整個頁面,incase我失去了一些東西:http://pastebin.com/DacKi9yh – 2014-10-29 13:33:57

+0

@BradlySpicer現在嘗試 – 2014-10-29 17:19:51

1

嘗試:

$sql_breakfast1 = "UPDATE member_food SET food_id ="'.$breakfast1.'" WHERE member_id="'.$id.'" AND food_type="'breakfast'""; 

播放使用單引號,可以嘗試每個變量和breakfast逐個刪除它們。

相關問題