Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图将一个mysql表id行放入php变量中,以便从中进一步查询mysql_Php_Mysql_Sql - Fatal编程技术网

试图将一个mysql表id行放入php变量中,以便从中进一步查询mysql

试图将一个mysql表id行放入php变量中,以便从中进一步查询mysql,php,mysql,sql,Php,Mysql,Sql,我正在用PHP、HTML和SQL进行编程,在项目的某些部分遇到了麻烦 在下面的代码中,我尝试在按下按钮后从文本框接收一个表示电影名称的字符串。然后我尝试搜索该电影的ID,然后在该ID所在的其他每个表中,我尝试删除与该ID相关的所有数据,然后从主表本身删除关于该电影的数据。然而,每当我尝试另一种方法时,我都会遇到大量无法处理的错误 有人能告诉我一个很好的方法,当电影名称为绿色英里时,删除关于ID为例如3的电影的所有表记录吗 <?php IF ($_SERVER["REQUEST_METHOD

我正在用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";
}

请不要在文章中没有代码或链接到
PasteBin
或类似内容的情况下发表文章。我们的工作不是寻找可能失败的链接或依赖外部服务。如果你对代码有问题,你应该发布代码。嗨,你把
mysqli.*
mysql.*
函数混在一起了。它们不是互锁库,您必须选择其中一个。注意:您不会获取
$dana
的数据,因此当您设置
$dana=mysql\u query
时,它会返回一个布尔值(真/假、1/0等),而不是您的电影IDA。对此,我建议错误处理匹配负数而不是正数<代码>如果(!$dana)
在编码时更有意义,并且使任何代码都更易于遵循。当然,这只是我的意见!在我添加了您提到的if语句之后,我现在得到了以下错误:无电影查找错误:无法删除或更新父行:外键约束失败(
bazus
film\u producent
,constraint
fk\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%肯定它们很好,因为我正在使用它们删除其他表行,它们工作得很好。这是唯一一个有问题的。