我在尝试使用php将数据从表单发送到mysql数据库时遇到了一些问题。我知道当我将表单操作设置为anothen页面(<form action="example.php>
时如何修复此问题,但我希望所有进程保持在一个页。
当我运行我的PHP脚本并在两个字段中输入名称然后发送,只有网页页面更改,没有别的。希望你可以帮助我。谢谢
<?php
$con=mysqli_connect("localhost","root","","test");
if (mysqli_connect_errno())
{
echo"Error connecting to database". mysqli_connect_error();
}
if (isset($_POST['input_send']))
{
$name=($_POST['input_name']);
$lastname=($_POST['input_lastname']);
$insert="INSERT INTO test_mysql (name, lastname) VALUES ('$name', $lastname)";
echo"record added";
}
?>
<form action="" action="post">
First name: <input type="text" name="input_name"/>
Last name: <input type="text" name="input_lastname"/>
<input type="submit" value="send" name="input_send"/>
</form>
答案 0 :(得分:1)
您的错误是您输入的
action="post"
而不是
method="post"
如果没有指定方法,PHP将回退到GET。
因此,您的isset($_POST)
将返回false,而您没有看到“已添加记录”
echo_ME指出的另一个错误是你没有向数据库提交MySQL查询:
$insert="INSERT INTO test_mysql (name, lastname) VALUES ('$name', $lastname)";
使用功能mysqli_query,您可以执行查询:
mysqli_query($insert);
正如其他人所说,您应该转义变量以阻止SQL Injections
答案 1 :(得分:0)
<form action="<?=echo $_SERVER['PHP_SELF']?>" method='post'>
您可以从服务器获取有关页面网址的信息。
它基本上对同一页面采取行动,我的意思是。
答案 2 :(得分:0)
更改此
$insert="INSERT INTO test_mysql (name, lastname) VALUES ('$name', $lastname)";
到
mysqli_query("INSERT INTO test_mysql (name, lastname) VALUES ('$name', '$lastname')");
和这个
action="post"
到
method="post"
并像这样逃避你的变量:
$name=mysqli_real_escape_string($_POST['input_name']);
$lastname=mysqli_real_escape_string($_POST['input_lastname']);