试图将一个mysql表id行放入php变量中,以便从中进一步查询mysql
我正在用PHP、HTML和SQL进行编程,在项目的某些部分遇到了麻烦 在下面的代码中,我尝试在按下按钮后从文本框接收一个表示电影名称的字符串。然后我尝试搜索该电影的ID,然后在该ID所在的其他每个表中,我尝试删除与该ID相关的所有数据,然后从主表本身删除关于该电影的数据。然而,每当我尝试另一种方法时,我都会遇到大量无法处理的错误 有人能告诉我一个很好的方法,当电影名称为绿色英里时,删除关于ID为例如3的电影的所有表记录吗试图将一个mysql表id行放入php变量中,以便从中进一步查询mysql,php,mysql,sql,Php,Mysql,Sql,我正在用PHP、HTML和SQL进行编程,在项目的某些部分遇到了麻烦 在下面的代码中,我尝试在按下按钮后从文本框接收一个表示电影名称的字符串。然后我尝试搜索该电影的ID,然后在该ID所在的其他每个表中,我尝试删除与该ID相关的所有数据,然后从主表本身删除关于该电影的数据。然而,每当我尝试另一种方法时,我都会遇到大量无法处理的错误 有人能告诉我一个很好的方法,当电影名称为绿色英里时,删除关于ID为例如3的电影的所有表记录吗 <?php IF ($_SERVER["REQUEST_METHOD
<?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";
}
请不要在文章中没有代码或链接到PasteBin
或类似内容的情况下发表文章。我们的工作不是寻找可能失败的链接或依赖外部服务。如果你对代码有问题,你应该发布代码。嗨,你把mysqli.*
和mysql.*
函数混在一起了。它们不是互锁库,您必须选择其中一个。注意:您不会获取$dana
的数据,因此当您设置$dana=mysql\u query
时,它会返回一个布尔值(真/假、1/0等),而不是您的电影IDA。对此,我建议错误处理匹配负数而不是正数<代码>如果(!$dana)
在编码时更有意义,并且使任何代码都更易于遵循。当然,这只是我的意见!在我添加了您提到的if语句之后,我现在得到了以下错误:无电影查找错误:无法删除或更新父行:外键约束失败(bazus
film\u producent
,constraintfk\u ass\u 2
外键(filmy\u id
)引用filmy
(id
)film_producent有两个字段:cofoundername和movie_id,其中movie_id(此处为filmy_id)来自movie(此处为filmy)表。这是唯一一个有问题的,因为所有其他的都没有给出这个错误。@user3318865好吧,它似乎找不到电影。如果您执行echo$id代码>,它说什么?结果是否与数据库中的任何内容匹配?我已经修复了在正确的位置添加“ON DELETE CASCADE ON UPDATE CASCADE”的错误,它几乎可以正常工作。现在,这个查询:$findel=“从bazus
删除filmy
其中filmy
id
=$getid;”;当从php脚本中使用时,它不会删除filmy(movies)表行,但当从myPHPadmin SQL查询处理器中调整和使用时,它会工作。有什么问题吗?再次感谢您的反馈。我添加了“die”和其他错误处理,但我100%肯定它们很好,因为我正在使用它们删除其他表行,它们工作得很好。这是唯一一个有问题的。