2009-07-11 2 views
0

Что случилось с этим запросом MySQL?Ошибка запроса MySQL

$name = mysqli_real_escape_string($db,$_POST['name']); 
$email = mysqli_real_escape_string($db,$_POST['email']); 
$comment = mysqli_real_escape_string($db,$_POST['content']); 
$dt = date("F j, Y, g:i a"); 
$sql = mysqli_query($db, "INSERT INTO `tbl_contact` (`id`, `name`, `email`, `comment`, `date`) 
VALUES (NULL, '".$name."', '".$email."', '".$comment."', '".$dt."'"); 

Он держит неудачу с

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

Спасибо :)

ответ

6

Вы не закрывающую скобку значений в SQL - последний линия должна заканчиваться следующим образом:

..., '".$dt."')"); 
      ^
       Added closing parenthesis for the VALUES clause. 
+0

Благодарит миллион, это то, что кодирование в ночное время делает мне :( – bear

1

Действительно, вам нужно закрыть круглую скобку.

В следующий раз, если вы получите этот тип ошибки, попробуйте выяснить, какой SQL фактически выполняется, распечатав его. Затем вы можете либо проанализировать запрос вручную (вы бы видели это за несколько секунд), либо запустить его в некоторой среде, где вы можете легко изменять и выполнять запросы, если запрос более сложный.

+0

Это настолько важно, если вы работаете с динамической SQL. Это почти невозможно понять, что не так, не увидев конечный результат ваших 20 concat заявлений – colithium

0

Одним из хороших практик, которые я следую, чтобы избежать таких ошибок, чтобы создать запрос в одной строке и выполнить запрос в следующей строке, как этот

$sql="INSERT INTO `tbl_contact` (`id`, `name`, `email`, `comment`, `date`) 
VALUES (NULL, '".$name."', '".$email."', '".$comment."', '".$dt."')"; 

$result = mysqli_query($sql); 

Еще раз спасительный трюк является ommitting излишних конкатенаций для добавление ". Ваш SQL может быть более простым, как этот

$sql="INSERT INTO `tbl_contact` (`id`, `name`, `email`, `comment`, `date`) 
VALUES (NULL, '$name', '$email', '$comment', '$dt')"; 
Смежные вопросы