如何在php中将变量数组单独插入数据库?

Posted

技术标签:

【中文标题】如何在php中将变量数组单独插入数据库?【英文标题】:How can I insert an array of variable into a database individually in php? 【发布时间】:2020-08-04 02:58:28 【问题描述】:

如何将数组单独插入数据库,它显示错误。我想一次将它们全部插入...有时数组可能更多的是 3、5 或 10。

$roll_num = '111,222,333';
$rollnum = explode(",",$roll_num);

$sql ="INSERT INTO eyfstb(specialnum)  VALUES('$rollnum[]')";

if($db->query($sql)== TRUE)
    echo "true";
else
     echo "false";

【问题讨论】:

我不明白你的意思 【参考方案1】:

您可以将其动态插入到您的Database,这将解决您的问题。 :D

  $roll_num = '111,222,333';
  $rollnum_arr = explode(",",$roll_num);

  for($x = 0; $x < count($rollnum_arr); $x++)
      $sql ="INSERT INTO eyfstb(specialnum)  VALUES(".$rollnum_arr[$x].")";
  

  if($db->query($sql) == TRUE)
      echo "true";
  else
      echo "false";
   

【讨论】:

【参考方案2】:

explode 函数将您的数组转换为多个索引变量,所以关于您的问题,它应该是:

$roll_num = '111,222,333';
$rollnum = explode(",",$roll_num);

$sql ="INSERT INTO eyfstb(specialnum)  VALUES('$rollnum[0]')";

if($db->query($sql)== TRUE)
    echo "true";
else
     echo "false";

如果您想插入所有这些,您可以将其作为 JSON 存储在您的表中,或者创建其他列。

【讨论】:

我想一次全部插入...有时数组可能更多的是 3、5 或 10。 要解决您的问题,您需要使用loop 函数,以便您可以动态插入您的Database。请看我上面的回答。谢谢【参考方案3】:

首先,您的 $roll_num 变量不是数组。 并且explode 函数会将您的字符串拆分为一个字符串,如下所示:https://www.php.net/manual/en/function.explode.php

为此,您可以构建您的数组,其中包含您的值,例如:

$roll_num = array('111', '222','333');

并且由于循环而插入:

for ($i = 0; $i < count($roll_num); $i++) 

    $sql = "INSERT INTO eyfstb(specialnum)  VALUES(" . $roll_num[$i] . ")";
    $db->query($sql);
    $db->execute();


它应该工作:)

【讨论】:

【参考方案4】:

据我了解,您想为每个数组单元插入一个新行。为此,我建议:

$roll_num = '111,222,333';
$rollnum = explode(",", $roll_num);

$sql = "INSERT INTO eyfstb(specialnum) VALUES('" . implode("'),('", $rollnum) . "')";

这将产生以下 SQL:

INSERT INTO eyfstb(specialnum) VALUES('111'),('222'),('333')

而且会比循环和插入每次迭代更有效。

【讨论】:

以上是关于如何在php中将变量数组单独插入数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 php 中将数组值作为键值对插入到数据库表中

如何在准备好的语句php中的不同行中插入多条记录

在 PHP 中将数据插入到 .docx 和 .odt

在php中将最后一个id插入变量发送到另一个页面[重复]

如何在 Laravel 5.6 中将数组插入数据库

如何在node.js中将json数组数据插入mysql?