删除查询!我已经尝试了已有的帖子没用

问题描述

| 我删除用户
query.PHP
选择的查询的第一页,这绝对正常:
<form method=post  action=\"delete.PHP\"> 
List of queries<br/>
<?PHP
$ebits = ini_get(\'error_reporting\');
error_reporting($ebits ^ E_NOTICE);
MysqL_connect(\"localhost\",\"root\",\"\") or die(MysqL_error());
MysqL_select_db(\"testdb\") or die(MysqL_error());
echo \"<br />\";
$query = \"select * from queries \";
$result =  MysqL_query($query) or die(MysqL_error()); 
$count=MysqL_num_rows($result);
while($row = MysqL_fetch_array($result))  
{ 
print \"<input type=\'checkBox\' name=\'Query[]\' value=\\\"\".$row[\'queryId\'].\"\\\"> \"; 
echo \"     \". $row[\'name\'].\"      \". $row[\"address\"].\"           \". $row[\"contactNo\"].\"   

      \". $row[\"query\"];
echo \"<br />\"; 
}  
?>
<input type=\"submit\" value=\"Delete\" name=\"Delete\"> 
<br/>  
</form>
我尝试使用第二页
delete.PHP
的以下代码,但似乎无济于事。    代码1:
<?PHP
if($_POST[\'Delete\'])  
{  
if(count($_POST[\'checkBox\']) > 0) {  
   foreach($_POST[\'checkBox\'] as $checkBox)  
   {  
        $del_id=$checkBox;  
        $sql = \"DELETE * FROM queries WHERE `queryId`= \'$del_id\'\";  
        $result = MysqL_query($sql);  
        MysqL_error();  

   }  
   echo \"Selected Rows deleted\";  
} else {  
     $NEW=\"nothing to Delete\";  
}

}
?>
代码2:
<?PHP
if(($_POST[\'Delete\']))
{
$count=array();
$count=$_POST[\'checkBox\'];
for($i=0;$i<count($count);$i++){
        $del_id = $checkBox[$i];
        $sql = \"DELETE FROM queries WHERE queryId=\'$del_id\' \";
        $result = MysqL_query($sql);
}
$NEW=\"Selected records Deleted\";
}
var_dump($_POST[\'checkBox\']);
var_dump($count);

?>
    

解决方法

您的复选框名称为\“ Query \”,但您以
$_POST[\'checkbox\']
的身份对其进行访问。应该是
$_POST[\'Query\']
。 编辑检查您更新的代码:
if($_POST[\'Delete\']) { 
  if(count($_POST[\'Query\']) > 0) { 
    foreach($_POST[\'Query\'] as $checkbox) { 
      $del_id=$checkbox; 
      $sql = \"DELETE * FROM queries WHERE queryId= \'$del_id\'\"; 
      $result = mysql_query($sql); 
      mysql_error(); 
    } 
    echo \"Selected Rows deleted\"; 
  } 
  else { 
    $NEW=\"Nothing to Delete\"; 
  } 
}
代替这个:
$del_id=$checkbox;
做这个:
// if queryId is numeric
$del_id=intval($checkbox);
这样可以确保您使用的值是数字,而不是用户的潜在恶意输入。我假设ѭ10是数字。如果不是,那么您需要这样做:
// if queryId is not numeric:
$del_id = mysql_real_escape_string($checkbox);
您的
DELETE
语法不正确:
$sql = \"DELETE * FROM queries WHERE queryId= \'$del_id\'\";
您只想要14英镑。同样,如果queryId的值是数字,则不需要用引号引起来:
$sql = \"DELETE FROM `queries` WHERE `queryId` = $del_id\";
最后,您的MySQL错误调用没有做任何有用的事情:
mysql_error();
这是您应该执行的操作以及其余代码:
if($_POST[\'Delete\']) { 
  if(count($_POST[\'Query\']) > 0) { 
    foreach($_POST[\'Query\'] as $checkbox) { 
      $del_id= intval($checkbox); 
      $sql = \"DELETE FROM `queries` WHERE `queryId` = $del_id\"; 
      $result = mysql_query($sql); 
      if(!$result) {
        echo \"There was an error in the query: \" . mysql_error();
      }
    } 
    echo \"Selected Rows deleted\"; 
  } 
  else { 
    $NEW=\"Nothing to Delete\"; 
  } 
}