2015-12-17 17 views
1

Не можете найти проблему в этом сценарии:MySQL ошибка синтаксиса при обновлении

$delhash = array(); 
$resultxx = mysqli_query($datba1,"SELECT htag 
FROM wall_hashtags 
WHERE publicat='$permid'") or die('Error1'); 

while(list($dht) = mysqli_fetch_row($resultxx)) { 
$delhash[] = $dht; 
} 

Следующая обновление не работает:

$result_update = mysqli_query($datba1,"UPDATE wall_hashtags SET 
numbr=numbr-1 WHERE htag IN (".implode(",", $delhash).")") 
die(mysqli_error($datba1)); 

У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «первым, вторым, третьим» в строке 1

Массив:

echo '<pre>'; print_r($delhash); echo '</pre>'; 

Array 
(
    [0] => first 
    [1] => second 
    [2] => third 
) 
+2

использование составлено заявление. ba сохранить снова SQL-инъекцию – Jens

ответ

6

Пожалуйста, убедитесь, что вы обновляете с помощью IN() с varchar значениями. Проверьте this для более подробной информации.

Итак, вы должны обернуть его '.

$result_update = mysqli_query($datba1,"UPDATE wall_hashtags SET 
       numbr=numbr-1 WHERE htag IN ('".implode("','", $delhash)."')") 
       or die(mysqli_error($datba1)); 
+0

Это должен быть правильный ответ. Не забудьте обернуть строку кавычками. – Mark

+1

'die' также находится в' mysqli_query'; также нуждается в 'или' ... или я недостаточно хорошо знаком с mysqli, и это действительно так? – chris85

+0

@ chris85 Я думаю, 'die()' отлично. Просто нужно добавить 'или'. – Parixit