#1054 - Неизвестный столбец 'domain.com' в 'списке полей'

Хорошо, второй вопрос за два дня... Я, наверное, здесь ошибаюсь, но я застрял.

пытается вставить доменное имя в таблицу под столбцом "имя". все мои переменные отражаются, так что я знаю, что они передаются и устанавливаются.

вставка выглядит следующим образом:

$newDomain = $_POST['newDomain']; //Get domain name
$newDomain_query =  mysql_query("INSERT INTO virtual_domains (name) VALUES ($newDomain)");
header("Location: domain_detail.php?domain=".$newDomain);

Я пробовал много способов написания этого скрипта, но каждый раз, когда я включаю:

or die(mysql_error)

в сценарии. запрос не запускается, и когда я вынимаю часть матрицы, он просто переходит к месту расположения заголовка.

3 ответа

Решение

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

Попробуйте это вместо этого:

$newDomain = $_POST['newDomain']; //Get domain name
$newDomain_query =  mysql_query("INSERT INTO virtual_domains (name) VALUES ('$newDomain')");
header("Location: domain_detail.php?domain=".$newDomain);

Если продолжить ответ Кена, то хорошей идеей будет позволить mysql обрабатывать экранирование кавычек с помощью mysql_real_escape_string (особенно для данных, отправляемых через post/get). Вы можете сделать это с помощью следующего:

$newDomain = $_POST['newDomain']; //Get domain name
$newDomainEscaped = mysql_real_escape_string($newDomain);
$newDomain_query =  mysql_query("INSERT INTO virtual_domains (name) VALUES ('$newDomainEscaped')");
header("Location: domain_detail.php?domain=".$newDomain);

Это поможет предотвратить любые ошибки, если у кого-то случайно появился апостроф в "новом домене", или, что еще хуже, в результате SQL-инъекции.

Вы пропустили кавычки вокруг вашей ценности. Запрос должен быть:

"INSERT INTO virtual_domains (name) VALUES ('$newDomain')"
Другие вопросы по тегам