#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')"