2014-08-02 3 views
0

Эй, ребята, я новичок во всей сцене базы данных и стараюсь выполнить относительно простую задачу, но, видимо, я делаю что-то неправильно. Каждый раз, когда я пытаюсь выполнить этот оператор, я получаю ошибку 1064, указывающую, что мой синтаксис неверен или версия сервера слишком стар. версия сервера SQL - 5.1.x, и я запускаю PHP5.Ошибка синтаксиса SQL или ошибка сервера?

Вот мой код:

$query = "INSERT INTO `cut_log` (`driver`, `date1`, `time`, `cut`, `flood`, `notes`) VALUES ($driver, $date, $time, $cut, $flood, $notes)"; 
$result = $mysqli->query($query); 
if($result) { 
echo "success"; 
} else { 
echo "" . $mysqli->errno . $mysqli->error; 
} 
+2

Вам нужно процитировать '($ водитель, дата $, $ время, $ срезанные, $ наводнения, $ примечания)' сделать '(» $ driver ',' $ date ',' $ time ',' $ cut ',' $ flood ',' $ notes ') ' –

+1

Вы должны повторить запрос, который дает ошибку. И лучше использовать подготовленные операторы с параметрами для привязки входных значений, чтобы избежать внедрения sql и избежать проблем с экранированием. – VMai

+2

Если вы собираетесь забыть цитаты вокруг строк в операторах SQL, сделайте себе одолжение и научитесь использовать переменные связывания –

ответ

6

Вы упускаете кавычки вокруг строковых значений:

$query = "INSERT INTO `cut_log` (`driver`, `date1`, `time`, `cut`, `flood`, `notes`) VALUES ('$driver', '$date', '$time', '$cut', '$flood', '$notes')"; 
+0

Был ли это ваш +1? lol –

+0

Да! .......... –

+0

Awww gee, thanks;) –

2

Как сказал Джон, проблема заключается в том, что он отсутствует котировки.
Что вы должны сделать это prepare запрос к avoid SQL injection атак:

$query = "INSERT INTO `cut_log` (`driver`, `date1`, `time`, `cut`, `flood`, `notes`) 
      VALUES (?, ?, ?, ?, ?, ?)"; 
if ($stmt = $mysqli->prepare($query)) { 

    $stmt->bind_param("ssssss", $driver, $date, $time, $cut, $flood, $notes); 

    if($stmt->execute()) { 
     echo "success"; 
    } else { 
     echo "" . $mysqli->errno . $mysqli->error; 
    } 

} 
+1

Спасибо за редактирование @Fred Ты всегда замечательный! : D – meda

+0

Вы очень желанны. –

+0

Спасибо, ребята! Я попытался запустить это как есть и хотя запрос выполнен, он запустил ошибку при запуске ... нет никаких других переменных, которые учитывали бы ошибку. мысли? Предупреждение: mysqli_stmt :: bind_param(): Число переменных не соответствует количеству параметров в подготовленном операторе в /Users/Matt/path/to/zam/cut.php в строке 21 –

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