我目前正在努力寻找允许用户完成两个选项之一的页面。他们可以更新SQL数据库中的现有项目,也可以删除它。当客户删除选项时,一切都运行良好,但是每当客户更新项目时,它会在应用更新之前显示删除功能中的Query failed
语句。
我觉得这个问题必须在我的IF语句中,如果DeleteButton
变量没有设置,$deleteno
函数就不会退出。任何帮助,将不胜感激。请原谅可怕的混乱代码PHP不是我熟悉的语言。 (出于隐私原因,我没有提供连接信息)
function DeleteButton(){
@mysqli_select_db($con , $sql_db);
//Checks if connection is successful
if(!$con){
echo"<p>Database connection failure</p>";
} else {
if(isset($_POST["deleteID"])) {
$deleteno = $_POST["deleteID"];
}
if(!isset($deleteno)) {
$sql = "delete from orders where orderID = $deleteno;";
$result = @mysqli_query($con,$sql);
if((!$result)) {
echo "<p>Query failed please enter a valid ID </p>";
} else {
echo "<p>Order $deleteno succesfully deleted</p>";
unset($deleteno);
}
}
}
}
这是删除按钮的代码,以下代码用于UpdateButton
减去连接信息(工作正常)。
if(isset($_POST["updateID"])) {
$updateno = $_POST["updateID"];
}
if(isset($_POST["updatestatus"])) {
if($_POST["updatestatus"] == "Fulfilled") {
$updatestatus = "Fulfilled";
} elseif ($_POST["updatestatus"] == "Paid") {
$updatestatus = "Paid";
}
}
if(isset($updateno) && isset($updatestatus)) {
$sql ="update orders set orderstatus='$updatestatus' where orderID=$updateno;";
$result = @mysqli_query($con,$sql);
if(!$result) {
echo "<p>Query failed please enter a valid ID</p>";
} else {
echo "<p>Order: $updateno succesfully updated!</p>";
}
}
这些都是不完整的功能,因为我省略了连接部分。
答案 0 :(得分:1)
if(!isset($deleteno)) {
$sql = "delete from orders where orderID = $deleteno;";
如果未设置$ deleteno,您确定要执行该块吗?
P.S。你不应该依赖$_POST['deleteId']
作为一个数字。请阅读SQL注入,如何避免它们以及使用预准备语句。
答案 1 :(得分:0)
我已经更新了您的代码,但您需要编写更清晰的代码(空格,缩进等),这不仅可以帮助您学习,还可以轻松找到错误。
<?php
function DeleteButton()
{
@mysqli_select_db($con , $sql_db);
/*
Checks if connection is successful
*/
if(!$con){
echo"<p>Database connection failure</p>";
} else {
/*
Check if $_POST["deleteID"] exists, is not empty and it is numeric.
*/
if(isset($_POST["deleteID"]) && ! empty($_POST["deleteID"]) && ctype_digit(empty($_POST["deleteID"]))
$deleteno = $_POST["deleteID"];
$sql = "delete from orders where orderID='$deleteno'";
$result = @mysqli_query($con,$sql);
if(!$result){
echo "<p>Query failed please enter a valid ID </p>"
} else {
echo "<p>Order $deleteno succesfully deleted</p>";
unset($deleteno);
}
} else {
echo "<p>Please enter a valid ID </p>" ;
}
}
}
/*
Part 2:
===========================================================================
Check if $_POST["updateID"] exists, is not empty and it is numeric.
Check if $_POST["updatestatus"] exists, is not empty and equal to Paid or Fullfilled
*/
if( isset($_POST["updateID"]) &&
! empty($_POST["updateID"]) &&
ctype_digit(empty($_POST["updateID"]) &&
isset($_POST["updatestatus"]) &&
! empty($_POST["updatestatus"]) &&
( $_POST["updatestatus"] == "Fulfilled" || $_POST["updatestatus"] == "Paid" ) )
{
$updateno = $_POST["updateID"];
$updatestatus = $_POST["updatestatus"];
$sql ="update orders set orderstatus='$updatestatus' where orderID=$updateno;";
$result = @mysqli_query($con,$sql);
if(!$result){
echo "<p>Query failed please enter a valid ID</p>";
} else {
echo "<p>Order: $updateno succesfully updated!</p>";
}
}
答案 2 :(得分:0)
MySQL语法中有错误
$sql = "delete from orders where orderID = $deleteno;";
<{1}}后{p} $deleteno
必须在单引号内。
将其更改为此orderID