我正在尝试通过 php 表单插入 mysql 数据库,但我遇到了一个问题,即只输入了第二个表单字段,但没有输入第一个表单字段。
编辑
这里是重写后的代码。
HTML
<form action="submit.php" method="post">
First Name: <input name="first_name" type="text" size="20" maxlength="25"><br>
Last Name: <input name="last_name" type="text" size="20" maxlength="25"><br>
</form>
PHP
$dbhost = 'xx';
$dbname = 'xx';
$dbuser = 'xx';
$dbpass = 'xx';
$con = mysqli_connect($dbhost, $dbuser, $dbpass);
$first_name = mysqli_real_escape_string($con, $_POST['first_name']);
$last_name = mysqli_real_escape_string($con, $_POST['last_name']);
$query = "INSERT INTO tbl_customerinfotest VALUES ('$first_name','$last_name');";
echo $query;
mysqli_close($con)
数据库连接正常..但仍然是同样的问题。名字给出空值。在 $post 上打印会给我: 数组 ( [first_name] => [last_name] => collingwood
编辑 我将表单名称更改为不带 _ 的名字,现在可以了吗?
此外,现在它是 sqli 是否更安全?安全的下一步是使用准备好的语句吗?
最佳答案
我会首先将发布的数据放入变量中,就像这样(我还添加了非常重要的 real_escape_string 函数):
$first_name = mysql_real_escape_string($_POST['first_name']);
$last_name = mysql_real_escape_string($_POST['last_name']);
请注意 $_POST 数组中的单引号
然后尝试查询:
INSERT INTO tbl_customerinfotest (first_name, last_name) VALUES ('$first_name','$last_name')";
最后,您应该使用 mysqli 或 PDO 函数,因为 mysql_* 已被弃用。
如果仍然不起作用,请添加 print_r($_POST);
添加您的 PHP 脚本的开头,以查看发布的数据是否正确且名称是否正确。
关于php - 用php插入mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16845466/