2015-04-29 2 views
0

Я отправляю данные для события в этом формате с помощью AJAX:Правильная вставка даты в дате MySql поле

doctor=100&date=2015-04-30&rCheck=1&rDate=2015-05-12&fromTime=21%3A35&toTime=22%3A40&status=open 

Я получаю его, как это с PHP

$date = $_POST['date']; 
$fromHours = $_POST['fromHours']; 
$fromMinutes = $_POST['fromMinutes']; 
$toHours = $_POST['toHours']; 
$toMinutes = $_POST['toMinutes']; 
$fromTime = $_POST['fromTime']; 
$toTime = $_POST['toTime']; 
$start = $date.' '.$fromTime.':00'; 
$end = $date.' '.$toTime.':00'; 
$status = $_POST['status']; 
$doctor = $_POST['doctor']; 

if($_POST['rCheck']==1){ 
    $repeat = $_POST['rDate']; 
}else{ 
    $repeat = '0000-00-00'; 
} 

Когда я эхо любого из что переменные получают правильный результат.

Я вставки данных в базе данных, как это:

$query = 'INSERT INTO events (start,end,doctor,status,repeat) VALUES ("'.$start.'","'.$end.'","'.$doctor.'","'.$status.'","'.$repeat.'")'; 
$result = mysqli_query($db, $query) or die (mysqli_error($db)); 

Теперь главная проблема $repeat, потому что без него все вставляется без проблем, но с $repeat я получаю эту ошибку:

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 'repeat) VALUES ("2015-04-30 21:35:00","2015-04-30 22:40:00","100","offen","2015-' at line 1

Вставка остановок после пятого символа «-». Даже если $repeat0000-00-00
Поле для этого в базе данных - это поле даты в формате 0000-00-00
Я действительно не знаю, где проблема.
Благодарим за помощь.

+0

Вы пытались вывести содержимое своего запроса, чтобы убедиться, что ожидаемые интерполированные переменные выбивают правильное значение? Выведите '$ query', чтобы увидеть фактический (полный) оператор, отправляемый в БД, вместо того, что вы показываете в ошибке. – Crackertastic

ответ

2

repeat является MySQL зарезервированного слова

Либо переименовать его к чему-то еще; например, «повторяется» или использовать клещи вокруг него

(start,end,doctor,status,`repeat`) 

Посмотрите, что говорит вам MySQL; это указывает его, где он начинается:

 
...for the right syntax to use near 'repeat 
            ^

Sidenote:

  • Если вы все еще возникают проблемы, вставляя данные в таблицу, вы можете дезинфицировать ваш вход (ы) с помощью mysqli_real_escape_string() или используя подготовленные заявления, как указано ниже.

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