我有一个插入查询,我在整个网站上一直在使用。工作完美,我在此网页中使用了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/