php - 用php插入mysql

标签 php mysql forms insert

我正在尝试通过 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/

相关文章:

php - 从已清除的 session 中单击注销后,Laravel 5.8 显示 "419 Page Expired"

php - CodeIgniter 打开主页时出错

forms - 如何从以前的表单字段中获取值?

javascript - 如何抓取即将上传的多个文件的名称?

SQL 查找和替换

javascript - jQuery:如何提交包含编辑后的用户输入值的表单?

php - 如何从数据库中仅提取月份和日期以找出用户的生日并将其与今天进行比较以找出生日

java - android php 连接错误? (添加java代码)

php - 即使事件被触发,Laravel Listener 也没有被触发

php - 数据不一致,使用MySQL、PHP、Yii2