#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, что может вам помочь