我使用PHP,HTML和SQL进行编程,并且陷入了项目的某些部分。

在下面的代码中,我尝试接收一个字符串,该字符串用于表示按下按钮后来自文本框中的电影名称。然后,我尝试搜索该电影的ID,然后在存在该ID的每个其他表中尝试删除与该ID关联的所有数据,然后从主表本身中删除有关电影的数据。但是,每当尝试其他方法时,我都会遇到很多无法解决的错误。

当电影名称为“绿色英里”时,有人可以指出一种删除ID为例如3的电影的所有表记录的好方法吗?

<?php
IF ($_SERVER["REQUEST_METHOD"] == "POST") {
$con=mysqli_connect("localhost","root","","bazus");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysql_query('SET foreign_key_checks = 0');
$tytul = mysqli_real_escape_string($con, $_POST['tytul']);
$id = "SELECT id FROM filmy WHERE tytul=$tytul";
$dana = mysql_query($id);
$film_przyznano =  "DELETE FROM przyznana WHERE filmy_id='$dana'";
$premiera = "DELETE FROM premiera WHERE filmy_id='$dana'";
$obsada = "DELETE FROM obsada WHERE filmy_id='$dana'";
$film_gatunek = "DELETE FROM film_gatunek WHERE filmy_id='$dana'";
$rezyseria = "DELETE FROM rezyseria WHERE filmy_id='$dana'";
$scenariusz = "DELETE FROM scenariusz WHERE filmy_id='$dana'";
$film_producent = "DELETE FROM film_producent WHERE filmy_id='$dana'";
//mysql_query($film_przyznano);
//mysql_query($obsada);
//mysql_query($premiera);
//mysql_query($film_gatunek);
//mysql_query($rezyseria);
//mysql_query($scenariusz);
//mysql_query($film_producent);
/*$sql="DELETE FROM filmy WHERE tytul='$tytul'";

        if (!mysqli_query($con,$sql)) {
          die('Error: ' . mysqli_error($con));
        }
        echo "1 record deleted";

$tytul="";*/
mysql_query('SET foreign_key_checks = 1');
}
?>

<div id="remove">
<form action='<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>' method='post'>
<input type="text" name="tytul">
<input type="submit">
</form>

</div>

最佳答案

在我看来,您的代码不错。您缺乏的是错误处理。如果第13行未返回结果,则$ dana不等于任何值,这将对您的所有查询结果抛出错误。

您应该在这之后添加一行

if ($dana > 0) {
  // do your delete queries
} else {
  // do nothing echo error
  echo "No movie found";
}

07-28 02:59
查看更多