【发布时间】:2016-06-16 00:59:46
【问题描述】:
我想创建一个按钮来删除所有需要删除的记录。我的数据库 person、address 和 cv 中有三个表... address_id 与 person 表中的 person_address 有关系,而 cv_id 与 person 表中的 person_cv 有关系。按下删除按钮时,应删除与此人相关的所有内容。我尝试了很多方法,例如:
echo "<td><a href='delete.php?id=<?" . $row['id'] . "'>delete</a></td>";
使用外部 delete.php 但它根本不起作用...link 在链接中我用于 delete.php 的教程
我的详细信息页面,删除按钮应该在 CV 之后:
<?php
$servername = "localhost";
$username = "root";
$password = "usbw";
$dbname = "persons";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT person_firstname, person_lastname,
person_email, person_phonenumber,
address_street,address_housenumber,
address_city,address_state,address_zipcode, cv_path
FROM person
inner join address on address.address_id = person.person_address
inner join cv on cv.cv_id = person.person_cv";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table border=1>
<tr>
<th>Voornaam</th>
<th>Achternaam</th>
<th>Straat</th>
<th>Huisnummer</th>
<th>Postcode</th>
<th>Stad</th>
<th>Provincie</th>
<th>Email</th>
<th>Mobiel</th>
<th>CV</th>
</tr>";
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row["person_firstname"] . "</td>";
echo "<td>" . $row["person_lastname"] . "</td>";
echo "<td>" . $row["address_street"] . "</td>";
echo "<td>" . $row["address_housenumber"] . "</td>";
echo "<td>" . $row["address_zipcode"] . "</td>";
echo "<td>" . $row["address_city"] . "</td>";
echo "<td>" . $row["address_state"] . "</td>";
echo "<td>" . $row["person_email"] . "</td>";
echo "<td>" . $row["person_phonenumber"] . "</td>";
echo "<td><a href='http://localhost:8080/website/" . $row['cv_path'] . "'>cv file</a></td>";
echo "</tr>";
}
}
else {
echo "Er is niks in het database gevonden";
}
$conn->close();
?>
删除.php:
<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password="usbw"; // Mysql password
$db_name="persons"; // Database name
$tbl_name="person"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// get value of id that sent from address bar
$id=$_GET['person_id'];
// Delete data in mysql from row that has this id
$sql="DELETE FROM $tbl_name WHERE person_id='$id'";
$result=mysql_query($sql);
// if successfully deleted
if($result){
echo "Deleted Successfully";
echo "<BR>";
echo "<a href='admin.php'>Back to main page</a>";
}
else {
echo "ERROR";
}
?>
<?php
// close connection
mysql_close();
?>
【问题讨论】:
-
让生活变得简单 - 使用 InnoDB 表并使用级联删除设置外键 ~ 这样当您从一个主表中删除一条记录时,相关表中的所有相关记录都将被删除
-
我猜您的外键缺少
on delete约束:只需将这些键更改为on delete cascade,属于用户的所有数据都将与他一起删除 -
我同意 RamRaider,级联删除似乎是一个不错的解决方案。许多数据库都支持(我使用 SQL Server),所以您的数据库也可能支持。
-
我对 PHP 有点陌生,所以请解释一下。我不想更改数据库中的任何内容。
-
看看Adding constraints in phpMyAdmin(那里的cmets中的所有链接也应该包含有价值的信息)