我正在构建一个网站..在这个页面中,我想在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>
答案 0 :(得分:3)
问题是由于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>