Ошибка вставки MySQL - PullRequest
       11

Ошибка вставки MySQL

2 голосов
/ 30 марта 2011

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

"У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнатьсинтаксис для использования рядом с '@ email.com, UT, 84505, NOW (), 69.169.186.192)' в строке 1 "

Я не могу понять проблему.Вот код для моего оператора вставки.

$insert_query = sprintf("INSERT INTO contacts (first_name, last_name, email, state, zip, date, ip) VALUES (%s, %s, %s, %s, %s, NOW(), %s)",
                        $fname,
                        $lname,
                        $email,
                        $state,
                        $zip,
                        $ip);


$result = mysql_query($insert_query, $connection) or die(mysql_error());

Моя таблица имеет следующую структуру:

    id int(11)                              
    first_name  varchar(100)                                 
    last_name   varchar(100)                             
    email   varchar(100)                                 
    state   varchar(3)                               
    zip int(10)                             
    date    datetime                                
    ip  varchar(255)

Ответы [ 3 ]

2 голосов
/ 30 марта 2011

Вам нужно заключить все столбцы строкового типа в оператор вставки. Замените %s на '%s' в формате sprintf.

Пожалуйста, прочитайте о SQL-инъекциях, если вы еще этого не сделали.

0 голосов
/ 30 марта 2011

Это может помочь вам ..

$insert_query = "INSERT INTO contacts set first_name = '$fname', last_name = '$lname', email = '$email', state = '$state', zip = '$zip', date = ". time() .", ip = '$ip')";


$result = mysql_query($insert_query, $connection) or die(mysql_error());

если вы хотите проверить запрос

echo $insert_query;
0 голосов
/ 30 марта 2011

Было бы полезно, если бы вы могли отобразить $ insert_query, но похоже, что вы не ставите кавычки вокруг параметров, которые являются varchars.

$insert_query = sprintf("INSERT INTO contacts (first_name, last_name, email, state, zip, date, ip) VALUES ('%s', '%s', '%s', '%s', '%s', NOW(), '%s')",
                        $fname,
                        $lname,
                        $email,
                        $state,
                        $zip,
                        $ip);

Кстати, у вас есть дополнительный столбецв вашей вставке - СЕЙЧАС не появляется связано с колонкой.Я предполагаю, что ZIP - это столбец varchar, а не число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...