【问题标题】:Query with multiple where statements?使用多个 where 语句进行查询?
【发布时间】:2018-06-26 12:52:11
【问题描述】:

使用INSERT INTO SELECT 语句从“table2”更改“table1”中的值时遇到问题。它将 table2 复制到 table1 中。

让我解释一下……

您在下面 table2 的 SELECT 语句中看到 AND group_name = 'djsfshj'... 我需要将该值 (djsfshj) 放入“table1”但是当我运行我的代码时 table1 没有不要添加任何东西。它有点忽略它,我没有收到任何错误。如果我删除 AND group_name = 'djsfshj' 我的代码有效,但 group_name 将为空白。

这让我大吃一惊,我怎么不能让它工作。知道为什么会这样吗?任何帮助表示赞赏!

代码:

foreach ($_GET["users_slideshows"] as $users_pick) {

$sql = "INSERT INTO table1 (username, volume, name, image, content, cssanimate, group_name) 

SELECT '".$user_data['data']['username']."', volume, name, image, content, cssanimate, group_name
        FROM table2 WHERE volume IN ('".$users_pick."') AND group_name = 'djsfshj' ";

        if ($conn->query($sql) === TRUE) {
            echo "";
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }

}

【问题讨论】:

  • select 语句本身是否返回任何行?
  • 在定义列的 SELECT 语句中指定 $user_data['data']['username'] 似乎很奇怪。那不应该只是您的列名,而不是用户名值吗?
  • @RobertC 我也想过,但它在 select 语句中,所以可以。当然应该在参数化查询中
  • "如果您删除 group_name"... 有趣... 您应该检查给定卷的行是否具有您想要的 group_name。就像@aynber 所说,您应该在数据库管理器(phpMyadmin,...)中单独检查 SELECT 语句

标签: php mysqli


【解决方案1】:

尝试使用PHP's join将变量$_GET["users_slideshows"]的内容作为逗号分隔值

$users_pick = join(',',$_GET["users_slideshows"]);

【讨论】:

    【解决方案2】:

    我发现你在查询中的引用不准确,你可以试试:

    $sql = "INSERT INTO table1 (username, volume, name, image, content, cssanimate, group_name) ";
    foreach ($_GET["users_slideshows"] as $users_pick) {
    $sql .= "SELECT ".$user_data['data']['username'].", volume, name, image, content, cssanimate, group_name
            FROM table2 WHERE volume IN ('".$users_pick."') AND group_name = 'djsfshj' ";
    }
    
    
            if ($conn->query($sql) === TRUE) {
                echo "";
            } else {
                echo "Error: " . $sql . "<br>" . $conn->error;
            }
    

    【讨论】:

    • Foreach 将不断添加$sql 字符串!想象一下,如果数组中有 3 个元素!你应该做$sql2 = $sql . "SELECT...和查询$sql2
    • 这样它会像dev.mysql.com/doc/refman/5.7/en/…那样执行批量插入,也是正确的方式..在这里查看关于如何在foreach上进行批量插入的答案stackoverflow.com/questions/10615762/php-bulk-insert-foreach
    • 您的链接答案适用于(...,...) INSERT 样式。 SELECT 在这里使用,它可以工作,但在每个 SELECT 之间使用 UNION
    • 哎呀,你是对的!
    • 另外查询必须在foreach循环之外
    猜你喜欢
    • 2014-04-12
    • 2017-06-26
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多