Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在数组中插入元素,数组中有空间作为通过php的db mysql的下一个字段_Php - Fatal编程技术网

如何在数组中插入元素,数组中有空间作为通过php的db mysql的下一个字段

如何在数组中插入元素,数组中有空间作为通过php的db mysql的下一个字段,php,Php,我的数组看起来像 Array ( [0] => lvenkat anarajam 1, venuv vparames 2, sprabhud girshank 1, pmuralid akandare 1, vparames rahulg2 3, sprabhud kseshadr 1, lvenkat rganesam 1, lvenkat ssihi 1, svarghes denmathe 2, vparames shsreena 2, suniljo bakrish2 1, sun

我的数组看起来像

Array ( [0] => lvenkat anarajam 1, venuv vparames 2, sprabhud girshank 1, pmuralid akandare 1, vparames rahulg2 3, sprabhud kseshadr 1, lvenkat rganesam 1, lvenkat ssihi 1, svarghes denmathe 2, vparames shsreena 2, suniljo bakrish2 1, suniljo bkganesh 1, suniljo msomakum 3 ) 
mysql中的mytable

Director  Manager  Count 
考虑到元素中的空白作为下一个字段,如何将数组插入my db

例如,我希望我的桌子看起来像

Director  Manager  Count 

lvenkat    anarajam  1
我尝试了插入的
foreach
循环,但我不知道如何将空格分隔为新字段或变量

foreach ($array as $val) {

      $data = implode ($val); //confuse starts here 

      $sql = "INSERT INTO report (Director, Manager, Count)
VALUES (?, ?, '?)";


  }

如果我理解正确,那么以下内容可能会有所帮助,尽管目前还不清楚您使用的是哪种数据库api—此处假定为mysqli

$sql = "INSERT INTO report (Director, Manager, Count) VALUES (?, ?, ?)";
$stmt=$db->prepare( $sql );
$stmt->bind_param('ssi',$first,$last,$int);

foreach( $array[0] as $key => $value ){
    list( $first,$last,$int )=explode( ' ', $value );
    $stmt->execute();
}
正如所指出的。。。数组中的第一个条目是一个字符串,因此需要稍微重写

    /* to rebuild the array as per question... */
    $str='lvenkat anarajam 1, venuv vparames 2, sprabhud girshank 1, pmuralid akandare 1, vparames rahulg2 3, sprabhud kseshadr 1, lvenkat rganesam 1, lvenkat ssihi 1, svarghes denmathe 2, vparames shsreena 2, suniljo bakrish2 1, suniljo bkganesh 1, suniljo msomakum 3';
    $array=array($str);


    $src = $array[0];
    $pieces = explode(',',$src);



    $sql = "INSERT INTO report (Director, Manager, Count) VALUES (?, ?, ?)";
    $stmt=$db->prepare( $sql );
    $stmt->bind_param('ssi',$first,$last,$int);



    foreach( $pieces as $key => $value ){
        list( $first,$last,$int )=explode( ' ', $value );
        $stmt->execute();
    }

那么,让我们开始吧。您有一个数组,其中包含要填充的值,每行用逗号分隔

首先,我们将为每一行创建一个数组

然后,在这些行中,我们将进一步展开一个空间的场

foreach($array as $val)
{
    // Getting all the rows
    $rows = explode(', ', $val);

    foreach($rows as $row)
    {
        // Getting the values
        $row_values = explode(' ', $row);

        /* Your database insert command goes here... */
    }
}

输入数组实际上只是一个逗号分隔的字符串,它恰好出现在数组的第一次出现时

然而,使用
mysqli\uu
API和一些分解,您可以从这个相当不友好的数组中生成有意义的数据

$array = ['lvenkat anarajam 1, venuv vparames 2, sprabhud girshank 1, pmuralid akandare 1, vparames rahulg2 3, sprabhud kseshadr 1, lvenkat rganesam 1, lvenkat ssihi 1, svarghes denmathe 2, vparames shsreena 2, suniljo bakrish2 1, suniljo bkganesh 1, suniljo msomakum 3'];
//remove leading space from 2nd, 3rd.... records
$array[0] = str_replace(', ',',',$array[0]);

$records = explode(',', $array[0]);

$sql = "INSERT INTO report (Director, Manager, Count) VALUES (?, ?, ?)";
// prepare once reuse many times
$stmt = $mysqli->prepare($sql);

foreach ($records as $fields) {
    list( $Director,$Manager,$count) = explode( ' ', $fields );

    $stmt->bind_param('ssi', $Director,$Manager,$count);
    $stmt->execute();
}
警告:如果任何字段本身包含空格,这将无法按预期工作

我强烈建议您看看如何创建该数组,并使每个记录以原始数组的自身形式出现


您可以首先用逗号分隔符分解输入,然后在分解的数组上为每个数组重新应用&准备插入记录的数组。所以,您直接导入在SQL方法中创建了一个数组

foreach($array as $val) {
  $data = explode(', ', $val);

   foreach( $data as $row ) {
   $strInsertData = explode(' ', $row);
  $arrInsert[] = '("'.mysql_real_escape_string($strInsertData[0]).'", "'.$strInsertData[1].'", ' .$strInsertData[2].')';
  }
}   
mysql_query('INSERT INTO table (Director, Manager, Count) VALUES '.implode(',', $arrInsert));

“将元素中的空白区域视为下一个字段”您能再解释一下吗?什么空位?此外,可能考虑重新修改“数组”的输出,这是一个项目的数组,所以基本上只是逗号分隔的字符串,您应该使用<代码>爆炸< /代码>,而不是<代码>爆破解< /代码>。您需要提供分隔符。请为mysqli查询编辑此分隔符。我没有使用pdo。我只是对基于
mysqli
not
PDO
Hi-Ram的非插入语句的值打了问号:),我想你没有注意到数组实际上只是一个逗号分隔的字符串,恰好存在于数组的[0]中。啊。。。我再看一遍,你是对的。谢谢@RiggsFolly??使用
mysql\uuquot/code>API是相当短视的,因为这是一个死API,正如@ramraider answer中所评论的,OP使用的是
mysqli\uquot/code>API。你仍然在使用mysql吗?@Aroon我刚才举了一个例子,我在大学时就用过。我们可以用mysqlI替换MySQL。但是我刚才提到的方法会给出我们想要的答案。