Php 将数组分隔为列,并在数据库中输入这两个列

Php 将数组分隔为列,并在数据库中输入这两个列,php,mysql,sql,Php,Mysql,Sql,我想把一个数组分成两个不同的列。 并将这两个分离列的条目作为表as(ID,名称)的两列 对于特定ID,我有多个名称 ($output) ( [0] => 109 ABC [1] => 110 CDEEE [2] => 109 EFGHI [3] => 111 PIJFJJF ) 上面是我的数组。如何输入数据库。 请帮忙。 到目前为止,我已经尝试使用explode函数分解(“,”,$out

我想把一个数组分成两个不同的列。 并将这两个分离列的条目作为表as(ID,名称)的两列 对于特定ID,我有多个名称

  ($output)
  (
    [0] => 109      ABC
    [1] => 110      CDEEE
    [2] => 109      EFGHI
    [3] => 111      PIJFJJF
  )
上面是我的数组。如何输入数据库。 请帮忙。 到目前为止,我已经尝试使用explode函数<代码>分解(“,”,$output)
但我得到的结果不同

将foreach循环与数组一起使用

$sql = "INSERT INTO my_table (ID,Name) VALUES";
$i = 0;
$my_id = "your id";
$my_cnt = count($my_array);
foreach($my_array as $name) {
      $exploded = explode(' ',$name);
      $sql .= "($exploded[0],$exploded[1])";
      if($i++ < $my_cnt) 
         $sql .= " , ";
}
echo $sql;
$sql=“插入我的表格(ID、名称)值”;
$i=0;
$my_id=“您的id”;
$my\u cnt=count($my\u数组);
foreach($my_数组作为$name){
$spolded=分解(“”,$name);
$sql.=“($exploded[0],$exploded[1])”;
如果($i++<$my\u cnt)
$sql.=“,”;
}
echo$sql;

然后执行查询$sql

您正在寻找的sql模式是一对多关系。它可以使用一个表将多个名称映射到一个id:

Names
---------
Name VARCHAR(255) NOT NULL (Primary Key)
Id   INT NOT NULL (Index)
您可以使用以下方法创建此表:

CREATE TABLE Names(
    Name VARCHAR(255) NOT NULL,
    Id   INT          NOT NULL,
    PRIMARY KEY(`Name`),
    INDEX `Id_idx` (`Id`)
);
然后,您可以使用以下命令将每个id的每个名称插入数据库:

INSERT INTO Names (Name, Id) VALUES('ABC', 109);
使用该工具,您可以执行以下操作:

$stmt = $dhb->prepare('INSERT INTO Names (Name, Id) VALUES(:name, :id)');

foreach($names as $nameStr) {
    list($id, $name) = explode(' ', $nameStr); // split "109 ABC" into id: 109 and name: ABC
    $stmt->execute(array(
        ':id' => $id,
        ':name' => $name
    ));

}
要检索索引的所有名称,可以使用此PDO查询:

$id = 123;
$names = array();

$stmt = $dbh->prepare('SELECT Name FROM Names WHERE Id = :id');
$stmt->execute(array(':id' => $id));

while(($newName = $stmt->fetchColumn(0)) !== false) {
    $names[] = $newName;
}

你需要澄清一下你的问题。您希望示例数组在数据库中的外观的示例将非常有用。
explode()
适用于字符串您正在显示的是一个数组。.使用
foreach
循环迭代此示例数组我希望示例数组拆分为两个不同的数组。作为ID(109、110、109、111)和其他与ID对应的数组之一,它们的名称为Name(ABC、CDEEE、EFGHI、pijfjf)。@Rinku u plz可以确认,在
109 ABC
之间有大量的空间,实际上上面示例中的$output数组是从连接不同表派生的sql查询的结果。当我将数组打印为print_r($output)时,是的,我得到的输出为109,带有空格ABC。+1可能想添加一个关于输入清理的注释。此代码中有多个错误…一个$my_id没有意义…二,将值附加到值,多次…还有more@KyleK我的身份证将是他想要添加的身份证,只要回显这个查询,您就会看到它的正确性有多好,在$sql的末尾,您的值在顶部,这意味着如果您对它进行连接,您将在my_表(ID,Name)中插入值(myid,$Name),值($ID,$Name)我想在数据库中输入两个不同列的值。但是我如何从数组($output)中导出分离的列呢。