我的删除查询不会从 MySQL 中删除任何内容


my delete query won't delete anything from mysql

我正在建立一个网站..在这个页面中,我想显示mysql中的所有数据并选择一行并将其全部从mysql中删除,但是当我进行测试(row_affect)时,它没有任何变化......它显示了我数据库中的所有信息,一切正常,但是当我想删除时,它不会删除。这是代码..

<?php
//Connect to DB
//include_once("Project/CIEconn.php");
$mysqlCON= mysqli_connect("localhost", "root", "","CIE") or die(mysqli_connect_error()); 
mysqli_select_db($mysqlCON,'CIE') or die ("no database");

$IDID = isset($_POST['Id']); // 1 2 
if( isset($_POST['delete']) ){
        if( empty($IDID) || $IDID == 0 ){
            echo"<h4>  please choose something to delete   </h4>";
        }else{

            echo $IDID ; 
            echo "<br>" ;
            $impid = implode(" , " ,  $_POST['Id']);

$sqlDelete = ("DELETE  FROM Shopping WHERE Id IN ('".$impid."') ") ;
$DeleteQuery = mysqli_query($mysqlCON,$sqlDelete) or die ("Error : ".mysqli_error($mysqlCON));
// TEST ONLY ////////----------------------------------------////////////
if (mysqli_affected_rows($mysqlCON) > 0) {
    echo "You have successfully updated your data.<br><br>";
}
else {
    echo "The data you submitted matched the current data so nothing was changed.<br><br>";
}
if (!$DeleteQuery) {
    die("Invalid query:" );
}

//var_dump($DeleteQuery );
////////----------------------------------------////////////
                     if(isset($DeleteQuery )){
                        echo"<h3> Done Deleting .... !!</h3>";
                    }else {echo "Error While Deleting...";}
        }

 }

$sqlCommand = "SELECT * FROM Shopping  ";
$result = mysqli_query($mysqlCON,$sqlCommand) or die(mysqli_error($mysqlCON)); 

echo '
<form action= "Shop_Sup.php"  method = "post">
<table width ="100%" cellpadding ="4" border="1" >
<tr>
<th>Check </th>
<th>ID</th>
<th>Jobs Name</th>
<th>Description</th>
<th> No Students needed</th>
<th>Due Date</th>
</tr>';
while ($row = mysqli_fetch_array($result) ){
// name = 'Id[]'
    echo "<tr>
<td> <input type='checkbox'  name='Id[]'  vlaue='". $row['Id'] ."' /> </td>

 <td>". $row['Id'] ." </td>
 <td> ". $row['JobName'] ." </td>
 <td> ". $row['Description'] ." </td>
 <td> ". $row['NoStudent'] . "</td>
<td>". $row['Date'] ." </td>
</tr>";

}
echo '
</table>
<br/>
<div align="center">
<input type="submit" name="delete" value="delete" />
<input type="reset" value="Clear Marks" />
</div>
</form>
';
?>
<html>
<head><title> Shopping.. </title></head>
<br>
<body>
</body>
</html>

问题是因为查询中的单引号不正确DELETE

$sqlDelete = ("DELETE  FROM Shopping WHERE Id IN ('".$impid."') ") ;
                                                  ^          ^

因此,您的DELETE查询应如下所示:

$sqlDelete = "DELETE FROM Shopping WHERE Id IN (" . $impid . ")";

编辑:

如果$_POST['Id']包含字符串数组,请执行以下操作:

// your code
$impid = implode("' , '" ,  $_POST['Id']);
$sqlDelete = "DELETE FROM Shopping WHERE Id IN ('" . $impid . "')";
// now execute $sqlDelete query     

您的 HTML 代码中也存在问题。看看这句话,

<td> <input type='checkbox'  name='Id[]'  vlaue='". $row['Id'] ."' /> </td>
                                           ^ here

应该是,

<td> <input type='checkbox' name='Id[]' value='". $row['Id'] ."' /> </td>