【问题标题】:Insert array of numbers into a single column , MySQL, PHP将数字数组插入单列,MySQL,PHP
【发布时间】:2019-11-04 05:07:52
【问题描述】:

所以我正在尝试创建一个包含 500 个随机数的数组,并尝试将它们发送到数据库中。

但每次我运行程序时,只有 1 个值被插入到数据库中,该值是 0

查询运行成功,但数据不会被插入。

这是我尝试过的。

创建一个包含 500 个随机数的列表:

$data = [] ;

for($i=0; $i<500; $i++)
 {
  $data[] = rand(0,10);  
 }

$into_mysql = json_encode($data);

查询发送 MySQL 表中的数据:

  $query = "INSERT INTO points(value) VALUES ('$into_mysql')";

  mysqli_query($conn, $query);

  echo "\n Data Inserted Successfully";

在输出中,我得到了Data Inserted Successfully。但如您所见,数据库列仅获得 0 条目:

如果我做错了什么,请纠正我。

【问题讨论】:

  • 你试过内爆函数吗??
  • 你应该使用准备好的语句。
  • @Dharman 这是不正确的一种情况。正如我在回答中描述的那样,直接插入比准备语句并执行 500 次要高效得多。并且鉴于插入的唯一数据是随机数,因此没有 SQL 注入的可能性。

标签: php mysql random


【解决方案1】:

您的问题是json_encode 的输出类似于"[5, 8, 1 ... , 2]",它不是一个有效的整数,因此您插入的值是0。您需要做的是生成 500 个插入,您可以使用 implode 来生成单独的值:

$query = "INSERT INTO points(value) VALUES (" . implode('),(', $data) . ")";

【讨论】:

    猜你喜欢
    • 2015-11-11
    • 2011-11-10
    • 2011-04-27
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    相关资源
    最近更新 更多