2014-10-29 2 views
0

Я пытаюсь добавить данные в таблицу, используя определенные запросы. В PHPMyAdmin я использую:SQL Query не работает в 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'

Для подтверждения того, что я могу отправляйте данные в таблицу, если я делаю это без части AND, она работает. Так что это работает:

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

Как отладить эту ситуацию? Каков наилучший способ справиться с этим?

+0

Что сообщения об ошибке? –

+1

dump '$ завтрак1' и посмотреть, что в нем? –

+0

@ 92_egdeH Я опубликовал. Ошибка отсутствует. Он думает, что он разместил правильное значение, вместо этого он меняет food_id на 1. –

ответ

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

> Хорошо, я просто нажал на строку String Integer String ... Тем не менее, я получаю эту ошибку: Неустранимая ошибка: невозможно передать параметр 4 по ссылке. Вот моя вся страница, incase Я что-то пропустил: http://pastebin.com/DacKi9yh –

+0

@BradlySpicer попробуйте сейчас –

1

Try:

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

Играть с одинарными кавычками, попытайтесь удалить их на каждой из переменных и breakfast один за другим.

Смежные вопросы