Так сказать, у меня есть такая форма:
<form action="submit2.php">
<input name="name" type="text" />
<input name="age" type="text" />
<input type="submit" />
</form>
Я использую этот код для вставки значений формы в таблицу базы данных, называемую "example" после того, как пользователь нажимает кнопку "Отправить".
mysql_query("INSERT INTO example (name, age) VALUES('$name', '$age' ) ") or die(mysql_error());
Однако все, что я получаю, это пустая запись в таблице. Я ошибаюсь, полагая, что входное значение становится переменной, если если в html-коде указывается имя (например, name= "age" )?
Доступ к переменным через глобальную переменную $_POST.
if(isset($_POST['name']) && isset($_POST['age'])){
$name = mysql_real_escape_string($_POST['name']);
$age = mysql_real_escape_string($_POST['age']);
mysql_query("INSERT INTO example (name, age) VALUES('$name', '$age' ) ") or die(mysql_error());
}
Ввод с именем "name" создаст переменную $name в submit2.php, только если включена функция register_globals, , которая является проблемой безопасности. Вы никогда не должны включать register_globals (кстати, он будет удален в PHP6).
Я не уверен, что такое атрибут method
по умолчанию, но он должен создать переменную с именем $_GET ['name'] или $_POST ['name']. Если он не создает ни одного из них, добавьте в форму форму method
:
<form action="submit2.php" method="post">
Однако, это не гарантирует, что эти переменные существуют (что, если кто-то получит доступ к submit2.php без использования вашей формы?). Вы должны использовать либо isset, либо! Empty (я предпочитаю последний, потому что он также проверяет, не является ли он пустым).
Последнее: не забывайте избегать переменных. Никогда не доверяйте пользовательскому вводу. В этом случае, поскольку вы вставляете переменную в запрос, вы должны использовать функцию mysql_real_escape_string.
вам нужно изменить данные из формы на полезные значения
<form action="submit2.php" method="post">
<input name="name" type="text" />
<input name="age" type="text" />
<input type="submit" />
</form>
и изменить часть запроса базы данных на:
$name=mysql_real_escape_string($_POST['name']);
$age=mysql_real_escape_string($_POST['age']);
mysql_query("INSERT INTO example (name, age) VALUES('$name', '$age' ) ") or die(mysql_error());
mysql_real_escape_string помогает обеспечить безопасность, не введя script в вашу базу данных и кто-то изменит или удалит записи.