мой sql-запрос ничего не вставляет, что я делаю не так?

#php #mysql #phpmyadmin

#php #mysql #phpmyadmin

Вопрос:

я пытаюсь вставить запрос в базу данных, однако по какой-то причине он не работает, возможно, вы, ребята, видите что-то, чего я не вижу.
я знаю, что entries прав (поскольку контрольный бит работает на другой странице, как и выбор БД.
это уже начинает сводить меня с ума, как и моего партнера по проекту.
запрос используется в PHP после заполнения формы. (на другой странице).

 $insert_query = "INSERT INTO enrties(
datum,
naam Relatie,
ContactPersoon,
bezoekreden)
VALUES (
'$_SESSION[Datum]',
'$_SESSION[RelatieNaam]',
'$_SESSION[ContractPersoon]',
'$_SESSION[redenBezoek]')";

 mysql_query($insert_query);
  

заранее благодарю.

p.s: я использую php для своего администратора

РЕДАКТИРОВАТЬ: ни один из них не справился с задачей, но я решил ее, потому что было много где-то еще>. <

Комментарии:

1. почему бы вам не выполнить mysql_query($insert_query) или die(mysql_error()), чтобы проверить, что это за ошибка?

2. что mysql_error() говорит? кстати, пробел в имени поля — не очень хорошая практика

3. Вы уверены, что это $_SESSION[ContractPersoon] вместо $_SESSION[ContactPersoon] ? Если это значение требуется, оно может завершиться ошибкой.

4. Запрос вставляет пустые строки? Возможно, у вас ошибка с вашей переменной $ _SESSION (неправильная их настройка и т. Д.)

5. @Daniel это именно проблема, я попробовал ошибку, но ошибка не возвращается.

Ответ №1:

naam Relatie недопустимое имя поля. Имена полей должны состоять из одного слова или экранироваться, чтобы «скрыть» пробел. Кроме того, имена полей с пробелами в имени являются плохой практикой и, как вы можете видеть, ОЧЕНЬ склонны вызывать именно такие проблемы.

Ответ №2:

 $insert_query = "
INSERT INTO enrties
(`datum`,`naam Relatie`,`ContactPersoon`,`bezoekreden`)
VALUES ('$_SESSION[Datum]','$_SESSION[RelatieNaam]','$_SESSION[ContractPersoon]','$_SESSION[redenBezoek]')";

mysql_query($insert_query);
  

Вы должны обернуть имена полей в ` , а строки в ‘

Комментарии:

1. Имена полей нужно экранировать только в том случае, если они являются зарезервированными словами или, как в запросе OP, в противном случае недопустимы из-за пробелов и еще много чего.

2. действительно, но это хорошая привычка, чтобы предотвратить ошибки, нет?

Ответ №3:

mysql_error(), вероятно, укажет вам правильное направление, как говорили другие.

Еще один момент, который следует отметить, заключается в том, что вы не должны иметь элементы массива непосредственно в своих строках, не заключая их в фигурные скобки, а имена полей с пробелами в них должны быть заключены в обратные метки.

Мое лучшее предположение о том, почему он терпит неудачу, заключается в том, что вы неправильно написали имя таблицы. Вероятно, это должны быть «записи».

Я бы попробовал это:

 $insert_query = "INSERT INTO `entries` (`datum`,
`naam Relatie`,
`ContactPersoon`,
`bezoekreden`)
VALUES (
'{$_SESSION['Datum']}',
'{$_SESSION['RelatieNaam']}',
'{$_SESSION['ContractPersoon']}',
'{$_SESSION['redenBezoek']}')";

mysql_query($insert_query) or die(mysql_error());
  

Ответ №4:

у вас не может быть имени поля с пробелом, поэтому измените naam Relatie на naam_Relatie, что может вам помочь