PHP&;MySQL删除多行脚本问题

PHP&;MySQL删除多行脚本问题,php,mysql,xhtml,Php,Mysql,Xhtml,当用户单击“删除”按钮时,我试图同时从两个不同的表中删除两个表行,但由于某些原因,我无法删除表行。有人能帮我找出脚本的错误吗?谢谢 下面是MySQL表 CREATE TABLE cases ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, file VARCHAR(255) NOT NULL, case VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY (id) ); CREATE

当用户单击“删除”按钮时,我试图同时从两个不同的表中删除两个表行,但由于某些原因,我无法删除表行。有人能帮我找出脚本的错误吗?谢谢

下面是MySQL表

CREATE TABLE cases (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
file VARCHAR(255) NOT NULL,
case VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE users_cases (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
cases_id INT UNSIGNED NOT NULL,
user_id INT UNSIGNED NOT NULL,
PRIMARY KEY (id)
);
下面是PHP&MySQL脚本

if(isset($_POST['delete_case'])) {

$cases_ids = array();

$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT cases.*, users_cases.* FROM cases INNER JOIN users_cases ON users_cases.cases_id = cases.id WHERE users_cases.user_id='$user_id'");

if (!$dbc) {
    print mysqli_error($mysqli);
}  else {
    while($row = mysqli_fetch_array($dbc)){ 
        $cases_ids[] = $row["cases_id"];
    }
}

foreach($_POST['delete_id'] as $di) {
    if(in_array($di, $cases_ids)) {
        $mysqli = mysqli_connect("localhost", "root", "", "sitename");
        $dbc = mysqli_query($mysqli,"DELETE FROM users_cases WHERE cases_id = '$delete_id'");

        $dbc2 = mysqli_query($mysqli,"DELETE FROM cases WHERE id = '$delete_id'");
    }

}

}
这是XHTML

<li>
<input type="text" name="file[]" size="25" />
<input type="text" name="case[]" size="25" />
<input type="text" name="name[]" size="25" />
<input type="hidden" name="delete_id" value="' . $row['cases_id'] . '" />
</li>

<li>
<input type="text" name="file[]" size="25" />
<input type="text" name="case[]" size="25" />
<input type="text" name="name[]" size="25" />
<input type="hidden" name="delete_id" value="' . $row['cases_id'] . '" />
</li>

<li>
<input type="text" name="file[]" size="25" />
<input type="text" name="case[]" size="25" />
<input type="text" name="name[]" size="25" />
<input type="hidden" name="delete_id" value="' . $row['cases_id'] . '" />
</li>

  • 请检查此部分

    foreach($_POST['delete_id'] as $di) {
        if(in_array($di, $cases_ids)) {
            $mysqli = mysqli_connect("localhost", "root", "", "sitename");
            $dbc = mysqli_query($mysqli,"DELETE FROM users_cases WHERE cases_id = '$di'");
    
            $dbc2 = mysqli_query($mysqli,"DELETE FROM cases WHERE id = '$di'");
        }
    
    }
    

    请检查这部分

    foreach($_POST['delete_id'] as $di) {
        if(in_array($di, $cases_ids)) {
            $mysqli = mysqli_connect("localhost", "root", "", "sitename");
            $dbc = mysqli_query($mysqli,"DELETE FROM users_cases WHERE cases_id = '$di'");
    
            $dbc2 = mysqli_query($mysqli,"DELETE FROM cases WHERE id = '$di'");
        }
    
    }
    

    也许我搞错了,你把除delete\u id之外的所有其他表单元素都设置成数组。delete\u id应该是这样的数组吗

    <li>
        <input type="text" name="file[]" size="25" />
        <input type="text" name="case[]" size="25" />
        <input type="text" name="name[]" size="25" />
        <input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" />
    </li>
    
    <li>
        <input type="text" name="file[]" size="25" />
        <input type="text" name="case[]" size="25" />
        <input type="text" name="name[]" size="25" />
        <input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" />
    </li>
    
    <li>
        <input type="text" name="file[]" size="25" />
        <input type="text" name="case[]" size="25" />
        <input type="text" name="name[]" size="25" />
        <input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" />
    </li>
    

  • 也许我弄错了,您将除delete\u id之外的所有其他表单元素都设置为数组。delete\u id应该是这样的表单中的数组吗

    <li>
        <input type="text" name="file[]" size="25" />
        <input type="text" name="case[]" size="25" />
        <input type="text" name="name[]" size="25" />
        <input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" />
    </li>
    
    <li>
        <input type="text" name="file[]" size="25" />
        <input type="text" name="case[]" size="25" />
        <input type="text" name="name[]" size="25" />
        <input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" />
    </li>
    
    <li>
        <input type="text" name="file[]" size="25" />
        <input type="text" name="case[]" size="25" />
        <input type="text" name="name[]" size="25" />
        <input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" />
    </li>
    

  • 您真的不应该将POST字段直接放入SQL查询中。由于SQL注入攻击,这可能是一个安全问题。@Dav,谢谢你的建议,一旦我知道我的代码有什么问题,我会尽快修复我的代码。你真的不应该将POST字段直接放入SQL查询中。由于SQL注入攻击,这可能是一个安全问题。@Dav,谢谢你的建议,一旦我知道我的代码有什么问题,我会尽快修复我的代码。