【问题标题】:Data input to MySQL Table with PHP and A For Loop使用 PHP 和 For 循环将数据输入到 MySQL 表
【发布时间】:2012-12-07 08:30:57
【问题描述】:

所以我在将数组放入 MySQL 表时遇到了一些麻烦。我的目标是将数组中的一个元素放入表格的一行,但事实并非如此。

$cnt = count($array);
for($i = 0; $i < $cnt; $i++)
    {
    mysql_query("
        INSERT INTO $groupname (id, name) 
        VALUES('', '".$array[$i]."')
        ", $conn1); 
    }

(id自动递增)

我希望这会将数组的第一个元素放在表格的第一行,第二个元素放在第二行,依此类推。相反,我的桌子看起来像这样

+----+-------+
| id | name  |
+----+-------+
|  1 | Array |
+----+-------+

我假设它只是获取数组并将整个内容放在第一行。我该如何防止呢?我将如何每行一个元素?

编辑 这是 var_dump

array(1) { [0]=> array(5) { [0]=> string(1) "0" [1]=> string(1) "1" [2]=> string(1) "2" [3]=> string(1) "3" [4]=> string(1) "4" } } 

出于测试目的,我只是将数字 0-4 按升序排列在数组的每个元素中

【问题讨论】:

  • 你能 var_dump $array 吗?看起来它包含数组。
  • 请分享var_dump($array);
  • 此外,最好将记录分组为一个INSERT语句:INSERT INTO table VALUES (NULL, "some"), (NULL, "other"), (and so on);
  • 你应该切换到 PDO / mysqli 与准备好的语句,这很可能容易受到 sql 注入。
  • 除了 @jeroen 之外,mysql_ 函数已被弃用并计划被删除。首选 PDO 或 mysqli_。

标签: php mysql arrays for-loop


【解决方案1】:

您的代码有效。但似乎 $array 实际上是一个多维数组,在第一级包含 1 个键。也许在循环之前尝试var_dump($array) 以查看其中的内容。

或在循环中尝试对$array[0]$array[0][$i] 进行盲注。虽然盲目编码从来都不是一件好事。

【讨论】:

    【解决方案2】:

    我猜你打算这样做:

    VALUES('', '".$array[$i]['name']."')"
    

    您不能将数组直接插入到 mysql 中,而是必须插入其中的每个值。

    【讨论】:

    • 太棒了,谢谢大家,现在似乎正在工作。现在我只需要查看 mysqli 的 PDO,确实意识到我使用的是不推荐使用的材料。感谢大家的帮助。
    【解决方案3】:

    有几点需要指出:

    不要调用要插入的 id 值。

    看起来$array[$i] 本身就是一个数组,所以请确保使用正确的值。

    您应该只构建插入查询并插入一次(参见下面的示例)。

    $query = 'INSERT INTO ' . $groupname . ' (name) VALUES ';
    foreach($array as $item) {
        $query .= "('". $item['name'] . "'),"; // 'name' or whatever proper item in multidimensional array is.
    }
    $query = rtrim($query, ',');
    mysql_query($query, $conn);
    

    您确实需要考虑使用 mysqli_* 函数而不是 mysql_*,因为它们已被弃用。

    您确实应该在查询中添加错误处理(即处理查询不起作用的情况并给自己一个错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多