好吧,我的脚本应该删除存储在 2 个 MySQL 表中的特定用户案例,但由于某种原因,当用户删除特定案例时,它会删除所有用户案例,我只希望它删除用户选择的案例。我想知道如何解决这个问题?预先感谢您的帮助。
这是 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 = '$di'");
$dbc2 = mysqli_query($mysqli,"DELETE FROM cases WHERE id = '$di'");
}
}
}
这是 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="submit" name="delete_case" id="delete_case" value="Delete Case" />
<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="submit" name="delete_case" id="delete_case" value="Delete Case" />
<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="submit" name="delete_case" id="delete_case" value="Delete Case" />
<input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" />
</li>
这是 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)
);
最佳答案
乍一看,这可能是因为所有 HTML 都包含在同一表单中。因此,无论您单击哪个删除案例按钮,每个delete_id[]隐藏字段都将提交到服务器。
因此,您需要将每一行分成自己的形式,例如......
<li>
<form method="POST" action="someURL.php">
<input type="text" name="file[]" size="25" />
<input type="text" name="case[]" size="25" />
<input type="text" name="name[]" size="25" />
<input type="submit" name="delete_case" id="delete_case" value="Delete Case" />
<input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" />
</form>
</li>
或其他类似将提交按钮更改为普通按钮并添加一些JavaScript...
关于PHP & MySQL - 删除表行问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2735178/