【问题标题】:PHP MySQL script shows no error but won't insert rowPHP MySQL脚本没有显示错误但不会插入行
【发布时间】:2013-08-08 09:37:00
【问题描述】:

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

$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 格式插入日期。我很沮丧。我在网上到处查。你能帮帮我吗?

【问题讨论】:

  • 删除 * 对于初学者。见dev.mysql.com/doc/refman/5.6/en/insert.html
  • 将 $_POST 变量直接插入你的 SQL 语句实际上是 SQL 注入的一扇敞开的大门......
  • 是的,就像@Borniet 所说的那样,但他只是想知道为什么他的查询不起作用。
  • 你有什么方法可以捕捉到你代码中的 mysqli 错误吗? (像'或死()')?您尝试将行插入到的表格的布局是什么?

标签: php mysql insert mysqli


【解决方案1】:

您查询的主要问题是*。这对于 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);
}

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

【讨论】:

    【解决方案2】:

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

    其次,如果您要插入这样的值,请确保表中的列数与您在此处插入的值数相同(在本例中为 6)

    【讨论】:

      【解决方案3】:

      您的查询有很多错误。查看文档以了解正确的语法

      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']."'
          )");
      

      【讨论】:

      • 仅供参考,如果您要按表格顺序插入每一列,则无需在此处指定 您的字段
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 2021-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      相关资源
      最近更新 更多