Ok. 所以现在,我的插入代码行如下所示:
$query=mysqli_query($con,"insert into orders values (".$user_index.",".$order_date.",".$_POST['item_number'].",".$_POST['price'].",".$_POST['tax'].",'".$_POST['pay_method']."')");
$order_date
是一个日期。 $user_index
和$_POST['item_number']
是 INT。 $_POST['price']
和$_POST['tax']
是双打。 $_POST['pay_method']
是一个枚举。 目前,我真的不能不在乎SQL注入。 我现在只想要一个工作页面。 我会在它在我的网站上线之前保护它。
无论我是否输入"die(mysqli_error($con((",我的虚拟服务器都会引发异常。 但是,在这种情况下,它肯定会到达插入语句之后的相同 if 语句中的代码。 然而,当我运行此代码时,一切看起来都很好,但数据库中没有任何变化。
我试过:
insert into orders (user_index,order_date,item_number,...) values (...)
但它也不是那样工作的。
最后,是的,我以前问过类似的问题。 但是由于我是这个网站的新手,不知道是否有办法编辑我的旧问题,并且认为这会更容易,因为我现在有更多细节,我可能会让和以前一样的人回答这个问题他们的问题和故障排除步骤回答;我只是继续发布了一个新问题。
你没有在字符串变量周围添加 '。
如果您知道将添加它们的值是什么,如下所示:
insert into orders values ('value1','value2' //etc
您的代码:
"insert into orders values (".$user_index.".$value2." //etc
相当于:
"insert into orders values (value1,value2 //etc
这是错误的,要解决此问题,请像这样添加' 标记:
$query=mysqli_query($con,"insert into orders values ('".$user_index."','".$order_date."','".$_POST['item_number']."','".$_POST['price']."','".$_POST['tax']."','".$_POST['pay_method']."')");
为了将来参考,调试动态创建的 SQL 语句的一个好方法是将它们分配给一个名为 $sql 的变量,然后运行 mysqli_query($con,$sql(。这样,如果它不起作用,您可以var_dump或回显您的$sql变量,并查看真正被查询的内容。
如果order_date
是一个日期,你需要用两边的'
填充字符串。
$query=mysqli_query($con,"insert into orders values (".$user_index.",'".$order_date."',".$_POST['item_number'].",".$_POST['price'].",".$_POST['tax'].",'".$_POST['pay_method']."')");