php - 二维数组第i行内爆逗号

标签 php mysql sql insert

数组$solution是二维的。我需要将其内容保存到 SQL 表中。但是,在保存之前,我需要检查 $solution[i][0]属于查询结果SELECT num_arr FROM Schedule WHERE num_arr<>'' .

问题出在 $vals = implode(...) 行.如何在数组的第 i 行内爆逗号 $solution ?现在这一行导致字符串 0,0,0,0而不是正确的值。

    $columns_land = array("`num_arr`","`start`","`fin`","`way`");
    $cols_land = implode(",",$columns_land);

    for($i=0; $i<sizeof($solution); $i++) {
            $vals = implode(',', array_map('implode_comma', $solution[$i]));
            query_land = "INSERT INTO `Sequence` (" . $cols_land . ") 
                          VALUES " . $vals . " 
                          WHERE num_arr='".$solution[$i][0]."' 
                          AND num_arr IN (SELECT num_arr FROM Schedule WHERE num_arr<>'')";

            $result_land = execute_query($query_land);
    }

    function implode_comma($arr) {
        return '(' . implode(',', $arr) . ')';
    }

最佳答案

这句话让我感到困惑:

$vals = implode(',', array_map('implode_comma', $solution[$i]));

因为 implode_comma() 需要一个数组,所以 $solution[$i] 中的每一项也必须是一个数组;但这意味着 $solutions 本身必须是一个三维数组。

我认为您可以将其写在循环中:

$vals = implode(',', $solution[$i]);
$query_land = "INSERT INTO `Sequence` ($cols_land) 
    VALUES ($vals)
    WHERE num_arr='".$solution[$i][0]."' 
    AND num_arr IN (SELECT num_arr FROM Schedule WHERE num_arr<>'')";

$result_land = execute_query($query_land);

顺便说一句,你应该正确地转义你在 SQL 中使用的变量,但我无法判断你使用的是哪个数据库层,所以我把它留给你。

关于php - 二维数组第i行内爆逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12179145/

相关文章:

mysql - 超过 1 个表的 SQL 内连接问题

php - SQL命令将选定的内容从选定的行复制到其他行?

sql - 如果存在则删除触发器并创建

sql - 从 postgreSQL 中的 JSON 数组获取单个元素

sql - 更改存储过程显示 `Argument data type ntext is invalid for argument 1 of left function` 错误

javascript - 如何将 javascript 脚本中的倒数计时器 document.getElementById() 多次写入嵌套在 php for 循环中的 html 段落中?

php - 通过 php 执行 powershell 命令

php - 如何使用 backbone.js 和 php 将数据保存到 mysql 数据库中

php - 在开始一个新项目时,值得花些时间在前面的事情[已结束]

php - APC、磁盘命中和要求/包含