我有一个插入查询,我在整个网站上一直在使用。工作完美,我在此网页中使用了comeed查询,但是对查询添加了验证。
我现在已经运行了查询,并且收到以下错误:

Undefined variable: run_query


$ run_query是我的mysqli_prepare变量的名称。我非常困惑,因为我不明白为什么会收到此错误,这似乎使我的整个查询无法正常工作。

$add_product_errors = array();
if (isset($_POST['Submit_addon'])) {
    $item_name = $_POST['item_name'];
    $desc = $_POST['desc'];
    $price = $_POST['price'];
    // price validate - must be decimal(float)
    if (empty($_POST['price']) || !filter_var($_POST['price'], FILTER_VALIDATE_FLOAT) || ($_POST['price'] <= 0)) {
        $add_product_errors['price'] = "Please enter a product price";
    }
    // item name validate
    if (empty($_POST['item_name'])) {
        $add_product_errors['item_name'] = "Please enter a name";
    }
    // item name description
    if (empty($_POST['desc'])) {
        $add_product_errors['desc'] = "Please enter a product description";
    }
    //add to database
    //if (empty($add_product_errors)) {
    $query = "INSERT INTO Product (Product_Name,Product_Desc,Product_Price) VALUES (?,?,?)
                ON DUPLICATE KEY
                  UPDATE
                  Product_Name = VALUES(Product_Name)
                  ,Product_Desc = VALUES(Product_Desc)
                  ,Product_Price = VALUES(Product_Price)";
    $run_query = mysqli_prepare($dbc, $query);
    //debugging
    if (!$run_query) echo mysqli_stmt_error($run_query);
    mysqli_stmt_bind_param($run_query, 'sss', $item_name, $desc, $price);
    $execute = mysqli_stmt_execute($run_query);
    $item_name = strip_tags($_POST['item_name']);
    $desc = strip_tags($_POST['desc']);
    //100 - changes the way the decimal displays in database
    $price = strip_tags($_POST['price'] * 100);
    //execute the query
    if ($execute) {
        echo "<script> alert('Addrrss Saved')</script>";
    } else {
        echo "<b>Oops! we have an issue </b>";
    }
}
mysqli_stmt_close($run_query);


有人可以对为什么我的mysql_prepare失败会有所了解。

最佳答案

把线:

mysqli_stmt_close($run_query);


if块中。否则,当表单尚未发布且未执行$run_query分配时,您将执行该行。

另外,当if (!$run_query)成功并打印错误时,您应该退出脚本。否则,即使准备失败,您也将继续尝试尝试执行查询的其余代码。当参数不是语句时,您不能调用mysqli_stmt_error(),您需要调用mysqli_error()。将该行更改为:

if (!$run_query) {
    die(mysqli_error($dbc));
}

关于php - mysqli_prepare语句失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36413786/

10-16 07:47