我有一个插入查询,我一直在我的网站上使用。工作得很好,我在这个网页上使用过来的查询但是在查询中添加了验证。 我现在运行了我的查询,我收到以下错误:
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会失败。
答案 0 :(得分:3)
放线:
mysqli_stmt_close($run_query);
在if
区块内。否则,在表单尚未发布且您未执行$run_query
分配时执行该行。
此外,当if (!$run_query)
成功并且您打印错误时,您应该退出脚本。否则,您将直接尝试执行查询的其余代码,即使准备失败也是如此。当参数不是语句时,你不能调用mysqli_stmt_error()
,你需要调用mysqli_error()
。将该行更改为:
if (!$run_query) {
die(mysqli_error($dbc));
}