首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个查询中的多个删除不是在PHP页面上工作,而是在phpMyAdmin中工作。

问一个查询中的多个删除不是在PHP页面上工作,而是在phpMyAdmin中工作。
EN

Stack Overflow用户
提问于 2013-10-01 20:46:32
回答 3查看 129关注 0票数 0

我想一次运行一个包含多个语句的查询,从我的数据库中删除记录。我构建了如下所示的mysql查询:

代码语言:javascript
复制
$query  = "DELETE FROM myTable1 WHERE indexID = '".$myVar."' LIMIT 1; ";
$query .= "DELETE FROM myTable2 WHERE indexID = '".$myVar."' LIMIT 1; ";
$query .= "DELETE FROM myTable3 WHERE indexID = '".$myVar."' LIMIT 6; ";

然后,我将我的查询称为:

代码语言:javascript
复制
if(!$result = mysqli_query($db, $query)) { 
   echo "error with $query"; 
} 

我做错什么了吗?当复制并在phpMyAdmin中运行时,打印出来的查询工作得很好。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-02 15:05:39

这个问题的答案是使用内置的php函数:

代码语言:javascript
复制
mysqli_multi_query($db, $query)

它不仅限于删除查询,还包括任何多语句查询。但是由于DELETE并不像SELECT那样返回我感兴趣的任何值,所以我们不需要太担心查询的结果集。

如果我们关注结果集,那么由kushal提供的具有循环答案的数组可能是一个有用的起点。

票数 1
EN

Stack Overflow用户

发布于 2013-10-02 06:13:02

我认为您应该创建一个查询数组,然后在循环中执行,如

代码语言:javascript
复制
       $query  = array["DELETE FROM myTable1 WHERE indexID = '".$myVar."' LIMIT 1",
         "DELETE FROM myTable2 WHERE indexID = '".$myVar."' LIMIT 1",
          DELETE FROM myTable3 WHERE indexID = '".$myVar."' LIMIT 6"];

然后在循环中执行

代码语言:javascript
复制
        for($i=0; $i<sizeof($query);$i++)
            {
               $result[$i]=mysql_query($con,$query[$i]);
            }
票数 1
EN

Stack Overflow用户

发布于 2013-10-01 20:48:42

您需要单独执行这些语句。我不认为mysqli_query()函数支持多条语句。

代码语言:javascript
复制
$query[] = "DELETE FROM myTable1 WHERE indexID = '".$myVar."' LIMIT 1; ";
$query[] = "DELETE FROM myTable2 WHERE indexID = '".$myVar."' LIMIT 1; ";
$query[] = "DELETE FROM myTable3 WHERE indexID = '".$myVar."' LIMIT 6; ";

foreach($query as $q) {
    $result = mysqli_query($db, $q);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19125592

复制
相关文章

相似问题

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