在MySQL中执行预准备语句时出错

时间:2015-03-25 23:57:55

标签: php mysql mysqli prepared-statement

当我尝试运行以下准备并执行INSERT语句的函数时,我不断收到MySQL的错误:

public static function addProduct($db, $barcode, $product_name, $price) {
    $quantity =  1;

    $query = "INSERT INTO Product (BarCode, PName, Price, QuantityInStock) VALUES (?, ?, ?, ?)";
    $stmt = $db->stmt_init();
    $stmt->prepare($query);
    $stmt->bind_param('isii', $barcode, $product_name, $price, $quantity);
    $stmt->execute();

    $result = $db->query($query);
    if (!$result || $db->affected_rows == 0) {
        echo "<h2>ARG: *$query* . ERROR: " . $db->error . "</h2>";
    }
}

这是我得到的输出:

  

ARG: INSERT INTO产品(BarCode,PName,Price,QuantityInStock)VALUES(?,?,?,?)。错误:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行“?,?,?,?)”附近使用正确的语法

这些是我想要插入的正确字段,每个变量都有一个值。这些也是bind_param()中的正确类型。

有人有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:1)

这是你的问题:

$result = $db->query($query);

您正在第二次运行查询。