2016-03-17 6 views
0

Я пытаюсь ввести данные в базу данных (это сценарий реакций), но я всегда получаю сообщение об ошибке, и это сводит меня с ума.База данных INSERT INTO не работает

Это код, который я использую:

if (mysql_query("INSERT INTO gastenboek (naam, bericht, datum, ip, plantid) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', $datum_reactie, '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."', $id)")) { 
     echo '<span style="color:green; font-weight: bold"Je reactie is succesvol toegevoegd!</span>'; 
    } else { 
     echo '<span style="color:green; font-weight: bold">Er is iets fout gegaan en je reactie is niet toegevoegd. Probeer het later opnieuw.</span>'; 
    } 

Это не похоже на работу. Но когда я отображать данные, используя следующий код:

if (mysql_query("INSERT INTO gastenboek (naam, bericht, datum, ip, plantid) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', $datum_reactie, '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."', $id)")) { 
     echo '<span style="color:green; font-weight: bold"Je reactie is succesvol toegevoegd!</span>'; 
    } else { 
     echo '<span style="color:green; font-weight: bold">Er is iets fout gegaan en je reactie is niet toegevoegd. Probeer het later opnieuw.</span>'; 
     $qry = "INSERT INTO gastenboek (naam, bericht, datum, ip, plantid) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', $datum_reactie, '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."', $id)"; echo $qry; 
    } 

Это то, что я получаю: enter image description here

Так что все кажется правильным?

Это то, что выглядит как моя база данных: enter image description here

+4

'Так что все кажется правильным' нет, вам нужна одинарные кавычки даты –

+1

использования переменных связывания; предотвратили бы эту ошибку и защитили бы вас от атак с SQL-инъекциями. –

+1

вы холодно добавили некоторые основные проверки ошибок, я не знаю, как вы ожидаете отладки кода, если вы даже не проверяете ошибки –

ответ

0

Похоже, что вам нужно в кавычки значения даты в третьей колонке.

Возможно, вы захотите использовать переменные связывания, поскольку это упростит работу с котировками и сделает их более безопасными (с точки зрения внедрения SQL). Что-то вроде этого:

$stmt = mysqli_prepare($db, "INSERT INTO gastenboek (name, bericht, datum, ip, platid) VALUES (?, ?, ?, ?, ?)"); 

mysqli_stmt_bind_param ($stmt, 'sssss', $_POST['naam'], $_POST['bericht'], $datum_reactie, $_SERVER['REMOTE_ADDR'], $id); 

mysqli_stmt_execute($stmt); 
0

Попробуйте указать поле «дата». Это может исправить вещи для вас.

0

Вы можете использовать (http://php.net/manual/en/function.mysql-error.php):

echo mysql_errno($link) . ": " . mysql_error($link) . "\n"; 

Это возвращает последнюю ошибку MySQL. Как сказал Lashane put '$ datum_reactie'

Кроме того, я должен сказать следующее: «не используйте msysql_ *, это устарело».

0

Запрос может завершиться неудачей по нескольким причинам: синтаксическая ошибка, несуществующая таблица/столбцы, недостаточные разрешения и т. Д. Лучше всего будет печатать ошибку при сбое (в else {}) с помощью mysql_error()/mysql_errno().

0

... Да, как все VARCHAR или текст, который вы должны иметь все значения одиночных кавычки

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