2014-04-29 2 views
0

Поблагодарили бы советника SO php/MySQL! Я смущен следующей, казалось бы, простой частью PHP-кода.Оператор PHP MySQL UPDATE успешно завершен, но столбец не обновляется

$queryDel = 'UPDATE `cocoon_result` SET `image` = NULL WHERE `id` = "B" AND `post_id` = 183'; 

$resultDel = mysqli_query($mysqli, $queryDel); 
if (!$resultDel) 
    $msg .= 'Errormessage: ' . mysqli_error($mysqli) . '<br />'; 
else if (mysqli_affected_rows($mysqli) == 0) 
    $msg .= 'Errormessage: ' . mysqli_error($mysqli) . '<br />'; 
else 
    $msg .= mysqli_affected_rows($mysqli) 'row(s) affected. What the ??'; 

Утверждение завершается успешно и говорит, что затрагивается 1 строка. Однако image по-прежнему остается старым. Когда я ввел тот же оператор sql через phpMyAdmin, обновление работает. Я пробовал обновлять image до '' и '123', и ошибка сохраняется, поэтому не только image = NULL.

ПЕРВИЧНЫЙ КЛЮЧ для таблицы cocoon_result является id и post_id.

Редактировать: Я пересадил этот фрагмент кода в новый файл, и он работает ... он просто не работает вместе с другими строками кода в исходном файле. Я постепенно добавлял другие части кода в этот новый файл, и он все еще работает, но для меня будет довольно сумасшедшим, чтобы добавить строки кода по частям, пока не будет воспроизведен оригинальный файл ... Плюс я чертовски любопытно, почему это странное поведение. Кто угодно?

+1

Можете ли вы воспроизвести это в sqlfiddle? – Strawberry

+0

не может воспроизвести это в sqlfiddle, я боюсь ... – user3585550

+1

Тогда проблема не в вашем запросе :-) – Strawberry

ответ

3

Я думаю, что ваша структура кода неправильная. Ваш код должен быть таким:

$queryDel = 'UPDATE `cocoon_result` SET `image` = NULL WHERE `id` = "B" AND `post_id` = 183'; 

$resultDel = mysqli_query($mysqli, $queryDel); 
$affected_rows = mysqli_affected_rows($mysqli); 

if ($affected_rows === -1) //if the query has failed, displaying the error 
    $msg .= 'Error deleting result list image: ', mysqli_error($mysqli); 
else if (mysqli_affected_rows($mysqli) == 0) //if the query hasn't returned any rows 
    $msg .= 'No rows affected<br />'; 
else 
    $msg .= mysqli_affected_rows($mysqli) 'row(s) affected. What the ??'; 
+0

Значение mysqli_affected_rows ($ mysqli) здесь 1. – user3585550

+0

Я отредактировал мой анвер, проверьте его еще раз, пожалуйста. –

+0

это не он - $ affected_rows = 1 – user3585550

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