首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过php运行许多mySQL查询

通过php运行许多mySQL查询
EN

Stack Overflow用户
提问于 2015-12-23 17:47:43
回答 6查看 219关注 0票数 2

我有一个有很多表的数据库。在第1面,我有一个按钮把我传递给第2面。在第2面,我希望代码删除每个命名表中的每一行,这些表中有我存储在变量中的特定pid。我在第二面有个密码,但它什么也做不了。

第2部分的代码:

代码语言:javascript
复制
$pid3 = $_POST['pid2'];

$del = "DELETE FROM answer_det WHERE pid='$pid3'";
$del .= "DELETE FROM project WHERE pid='$pid3'";
$del .= "DELETE FROM question WHERE pid='$pid3'";
$del .= "DELETE FROM respondent WHERE pid='$pid3'";
$del .= "DELETE FROM result WHERE pid='$pid3'";
$del .= "DELETE FROM users WHERE pid='$pid3'";

$run = mysqli_query($mysqli,$del);

if($run)
{
   echo "<h1>Project is deleted!</h1>";
}
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-12-23 17:53:01

使用查询

代码语言:javascript
复制
$pid3 = $_POST['pid2'];

$del = "DELETE FROM answer_det WHERE pid='$pid3';";
$del .= "DELETE FROM project WHERE pid='$pid3';";
$del .= "DELETE FROM question WHERE pid='$pid3';";
$del .= "DELETE FROM respondent WHERE pid='$pid3';";
$del .= "DELETE FROM result WHERE pid='$pid3';";
$del .= "DELETE FROM users WHERE pid='$pid3';";

$run = mysqli_multi_query($mysqli,$del);

if($run)
{
   echo "<h1>Project is deleted!</h1>";
}
票数 4
EN

Stack Overflow用户

发布于 2015-12-23 17:55:56

在存在pid的情况下,您可能会考虑修改mysql表,以便将该字段作为外键,该外键将在删除时级联。有点像

代码语言:javascript
复制
ALTER TABLE `answer_det` 
ADD FOREIGN KEY (pid) 
REFERENCES table_where_pid_is_the_primary_key (pid)
ON DELETE CASCADE;

用其他表名替换answer_det,以便在那里创建键。如果您没有权限更改表,那么您的查询可能会失败,因为缺少分号来分隔它们:

代码语言:javascript
复制
$del = "DELETE FROM answer_det WHERE pid='$pid3';";
$del .= "DELETE FROM project WHERE pid='$pid3';";
$del .= "DELETE FROM question WHERE pid='$pid3';";
$del .= "DELETE FROM respondent WHERE pid='$pid3';";
$del .= "DELETE FROM result WHERE pid='$pid3';";
$del .= "DELETE FROM users WHERE pid='$pid3';";
票数 1
EN

Stack Overflow用户

发布于 2015-12-23 18:11:08

或者,您可以使用joins运行一个查询,如下所示:

代码语言:javascript
复制
$pid3 = $_POST['pid2'];

$del = "DELETE a,b,c,d,e,f FROM answer_det a "
$del .= "JOIN project b on b.pid=a.pid "
$del .= "JOIN question c  on c.pid=a.pid "
$del .= "JOIN respondent d on d.pid=a.pid "
$del .= "JOIN result e on e.pid=a.pid "
$del .= "JOIN users f on f.pid=a.pid "
$del .= "WHERE a.pid='$pid3'";

$run = mysqli_query($mysqli,$del);

if($run)
{
   echo "<h1>Project is deleted!</h1>";

}

如何删除MySQL中的多个表?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34441108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档