Php 使用HTML表单将数据插入MySQL表

Php 使用HTML表单将数据插入MySQL表,php,html,mysql,wordpress,forms,Php,Html,Mysql,Wordpress,Forms,我目前正在尝试将行插入MySQL数据库,大部分代码都在那里,但有一些问题我无法诊断。我知道数据库连接很好,每次按下submit按钮都会运行正确的php脚本。我遇到的问题是,它总是向数据库表中添加2条记录,并且无法执行任何表单数据(它插入两个完全空白的行) 这是表单的代码(还有wordpress页面的一些额外代码) 此外,我知道我的数据库易受注入攻击,这是我计划在表单启动并运行后所做的更改。使用WordPress。使用global$wpdb,然后使用insert命令,而不是定义自己的连接 glob

我目前正在尝试将行插入MySQL数据库,大部分代码都在那里,但有一些问题我无法诊断。我知道数据库连接很好,每次按下submit按钮都会运行正确的php脚本。我遇到的问题是,它总是向数据库表中添加2条记录,并且无法执行任何表单数据(它插入两个完全空白的行)

这是表单的代码(还有wordpress页面的一些额外代码)


此外,我知道我的数据库易受注入攻击,这是我计划在表单启动并运行后所做的更改。

使用WordPress。使用global$wpdb,然后使用insert命令,而不是定义自己的连接

global $wpdb;

$success = $wpdb->insert('tbl_name', array(<br>
   'field1_name' => $_REQUEST['field1'],<br>
   'field2_name' => $_REQUEST['field2'],<br>
));<br>
if($success){<br>
   echo "Inserted correctly";<br>
} else {<br>
   echo "Something went awry!";<br>
}
global$wpdb;
$success=$wpdb->insert('tbl_name',数组(
'field1\u name'=>$\u请求['field1'],
'field2\u name'=>$\u请求['field2'],
));
如果($success){
回显“正确插入”;
}否则{
echo“出了差错!”;
}
充分利用WordPress。使用global$wpdb,然后使用insert命令,而不是定义自己的连接

global $wpdb;

$success = $wpdb->insert('tbl_name', array(<br>
   'field1_name' => $_REQUEST['field1'],<br>
   'field2_name' => $_REQUEST['field2'],<br>
));<br>
if($success){<br>
   echo "Inserted correctly";<br>
} else {<br>
   echo "Something went awry!";<br>
}
global$wpdb;
$success=$wpdb->insert('tbl_name',数组(
'field1\u name'=>$\u请求['field1'],
'field2\u name'=>$\u请求['field2'],
));
如果($success){
回显“正确插入”;
}否则{
echo“出了差错!”;
}
这是一条预先准备好的语句,它是在表中创建MYSQL记录的一种更安全的方法

<?php    
//MySQL Database
$servername = "url.com";
$username = "user_login";
$password = "user_password";
$datab = "database_name";

// Create connection
$con = new mysqli($servername, $username, $password, $datab);
global $con;

// Post form data
$name = $_POST['name'];
$type = $_POST['type'];
$brand = $_POST['brand'];
$part_number = $_POST['part_number'];
$price = $_POST['price'];
$oal = $_POST['oal'];
$material = $_POST['material'];
$cutting_diam = $_POST['cutting_diam'];
$shank_diam = $_POST['shank_diam'];
$flutes = $_POST['flutes'];
$loc = $_POST['loc'];
$corner_rad = $_POST['corner_rad'];
$qty = $_POST['qty'];
$trigger_qty = $_POST['trigger_qty'];
$reorder_link = $_POST['reorder_link'];
$toolbox_no = $_POST['toolbox_no'];
$drawer_no = $_POST['drawer_no'];
$bin_no = $_POST['bin_no'];
$product = $_POST['product'];

// Prepared statement
$insert = mysqli_prepare($con, "insert into cutting tools (name,type,brand,part_number,reorder_link,oal,price,material,cutting_diam,shank_diam,flutes,loc,corner_rad,qty,trigger_qty,user,drawer_no,bin_no,toolbox_no) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
mysqli_stmt_bind_param($insert, "sssssssssssssssssss", $name,$type,$brand,$part_number,$reorder_link,$oal,$price,$material,$cutting_diam,$shank_diam,$flutes,$loc,$corner_rad,$qty,$trigger_qty,$product,$drawer_no,$bin_no,$toolbox_no);
mysqli_stmt_execute($insert);

if ($insert) { echo "success"; mysqli_close($con); } else { echo "error"; mysqli_close($con); }
?>

密切注意列的顺序以及提交到这些列的数据。我编辑了这篇文章,因为你的订单在几个地方不正确

如果希望正确创建数据,则列名和上载到列名的数据变量的顺序必须完全相同。


顺便说一句,变量$product似乎与用户的列名不匹配,您可能需要对此进行检查。

这里有一条准备好的语句,这是在表中创建MYSQL记录的一种更安全的方法

<?php    
//MySQL Database
$servername = "url.com";
$username = "user_login";
$password = "user_password";
$datab = "database_name";

// Create connection
$con = new mysqli($servername, $username, $password, $datab);
global $con;

// Post form data
$name = $_POST['name'];
$type = $_POST['type'];
$brand = $_POST['brand'];
$part_number = $_POST['part_number'];
$price = $_POST['price'];
$oal = $_POST['oal'];
$material = $_POST['material'];
$cutting_diam = $_POST['cutting_diam'];
$shank_diam = $_POST['shank_diam'];
$flutes = $_POST['flutes'];
$loc = $_POST['loc'];
$corner_rad = $_POST['corner_rad'];
$qty = $_POST['qty'];
$trigger_qty = $_POST['trigger_qty'];
$reorder_link = $_POST['reorder_link'];
$toolbox_no = $_POST['toolbox_no'];
$drawer_no = $_POST['drawer_no'];
$bin_no = $_POST['bin_no'];
$product = $_POST['product'];

// Prepared statement
$insert = mysqli_prepare($con, "insert into cutting tools (name,type,brand,part_number,reorder_link,oal,price,material,cutting_diam,shank_diam,flutes,loc,corner_rad,qty,trigger_qty,user,drawer_no,bin_no,toolbox_no) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
mysqli_stmt_bind_param($insert, "sssssssssssssssssss", $name,$type,$brand,$part_number,$reorder_link,$oal,$price,$material,$cutting_diam,$shank_diam,$flutes,$loc,$corner_rad,$qty,$trigger_qty,$product,$drawer_no,$bin_no,$toolbox_no);
mysqli_stmt_execute($insert);

if ($insert) { echo "success"; mysqli_close($con); } else { echo "error"; mysqli_close($con); }
?>

密切注意列的顺序以及提交到这些列的数据。我编辑了这篇文章,因为你的订单在几个地方不正确

如果希望正确创建数据,则列名和上载到列名的数据变量的顺序必须完全相同。


顺便说一下,$product变量似乎与user的列名不匹配,您可能需要对此进行检查。

如果它插入空行并回显“Record added successfully.”,那么我的第一个检查是查看
$\u请求中是否有任何内容。什么是
var\u转储($\u请求)提交表单时的输出?(旁注:您几乎不想使用
$\u REQUEST
,因为它是查询参数、已发布表单值和cookie值的混合体,并且取决于脚本实际接收的服务器配置。在这种情况下,如果要插入空行并回显“已成功添加记录”,则更喜欢使用
$\u POST
),然后我的第一个检查是查看
$\u请求中是否有任何内容。什么是
var\u转储($\u请求)提交表单时的输出?(旁注:您几乎不想使用
$\u REQUEST
,因为它是查询参数、发布表单值和cookie值的混合体,并且取决于脚本实际接收的服务器配置。在这种情况下,您更喜欢使用
$\u POST