PHP MySQL脚本显示没有错误,但不会插入行

时间:2013-08-07 06:28:03

标签: php mysql insert mysqli

这是我应该插入行的代码行:

$query=mysqli_query($con,"insert * into orders 
values
(   ".$user_index.",".$order_date.",
    ".$_POST['item_number'].",".$_POST['price'].",
    ".$_POST['tax'].",'".$_POST['pay_method']."')
");

我的连接也没有任何错误。此外,它肯定执行后的代码行。这是我第一次使用PHP和MySQL的日期数据类型,但是我以yyyymmdd格式插入日期。我很沮丧。我在网上到处检查。你能帮我吗?

3 个答案:

答案 0 :(得分:2)

您的查询的主要问题是*。这对INSERT语句无效。

其次,为了避免SQL注入漏洞,您应该使用带有绑定参数的预准备语句。您可能还应该使用某种形式的错误检查。例如

$stmt = $con->prepare('INSERT INTO `orders` VALUES (?, ?, ?, ?, ?, ?)');
if ($stmt === false) {
    throw new Exception($con->error);
}
$stmt->bind_param('ssssss', $user_index, $order_date, $_POST['item_number'],
        $_POST['price'], $_POST['tax'], $_POST['pay_method']);

if (!$stmt->execute()) {
    throw new Exception($stmt->error);
}

仅供参考,在不知道列的数据类型的情况下,我认为它们都是字符串。

答案 1 :(得分:0)

首先,您必须从插入查询中删除*

其次,如果要插入这样的值,请确保表中的列没有与此处插入的值相同(在这种情况下为6)

答案 2 :(得分:-5)

您的查询存在很多错误。查看文档中的正确语法

mysqli_query($con,"INSERT INTO table_name (field1,field2,field1) values ('value1','value2','value3')");

具体针对您的问题

$query=mysqli_query($con,"INSERT INTO orders (your fields Here ) VALUES (
    '".$user_index."', '".$order_date."', '".$_POST['item_number']."',
    '".$_POST['price']."', '".$_POST['tax']."', '".$_POST['pay_method']."'
    )");
相关问题