2013-07-02 3 views
0

Я отправил запросы в базы данных mysql, поэтому он бросил меня на цикл, когда это перестало работать. Я просто пытаюсь вставлять текст и информацию о int и десятичной форме. Является ли синтаксис неправильным? Он выдает это сообщение об ошибке, но я не знаю, что это значит!php/mysql: ошибка отправки запроса в базу данных mysql

ErrorMessage:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'long) VALUES (jpeg.jpg,1410700,image/jpeg,1372713379,42.978852222222,-86.0356041' at line 1 

имя, тип, даты и времени столбцы таблицы являются VARCHAR

размер INT

лат и долго десятичные (14,12) и (15,12)

Я пробовал много разных вариантов запроса, чтобы попытаться отправить его на мой localhost wampserver. Если вы видите что-то, что я пропустил, дайте мне знать. Благодаря!

$conn = mysqli_connect("localhost", "root", "password", "databaseimage") or die('Error Connecting.'); 
$sql = "INSERT INTO `images` (name,size,type,datetime,lat,long) VALUES ($imageName,$imageSize,$imageType,$datetime,$lat,$long)"; 
if(mysqli_query($conn, $sql)) { 
    echo "Added to database successfully!"; 
} else { 
    echo "Error sending query!"; 
    printf("\nErrormessage: %s\n", mysqli_error($conn)); 
} 

Я пробовал его с и без знаков. Я пробовал его с одинарными кавычками вокруг каждой переменной. Я пробовал просто отправлять необработанные данные и все еще ошибки.

+0

Хорошо, попробуйте добавить одинарные кавычки в строковые переменные, например: VALUES ('$ imageName', $ imageSize, '$ imageType' и т. Д.) –

+2

Проблема с 'long' –

+0

Вы должны действительно использовать подготовленные инструкции вместо впрыскивания ваших переменных (без кавычек ...) в ваш оператор sql. – jeroen

ответ

0

запрос должен выглядеть

$sql = "INSERT INTO `images` (name,size,type,datetime,lat,`long`) VALUES ('$imageName',$imageSize,'$imageType','$datetime',$lat,$long)"; 
4

LONG является MYSQL зарезервированного слова: http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

Один из способов исправить это, чтобы обернуть эти слова в обратных кавычках:

INSERT INTO `images` (name,size,type,datetime,lat,`long`) VALUES ('$imagename'.... 

Но гораздо лучше избегать использования зарезервированных слов в качестве имен столбцов или таблиц, если вы можете - как вы обнаружили, это приводит к нечетным ситуациям это.

+0

Большое вам спасибо! – matt

+0

Я сделал то, что вы сказали, и получил это ... Errormessage: Неизвестный столбец «jpeg.jpg» в «списке полей» – matt

+0

Вам также нужно будет использовать одинарные кавычки вокруг значений столбцов - я обновил ответ. Однако вы должны взглянуть на переход к mysqli_ * или PDO; оба помогут вам написать SQL, который намного более безопасен. – andrewsi

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