Py学习  »  DATABASE

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

Aroon • 4 年前 • 652 次点击  

我的阵列看起来像

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 

如何将元素中的空白空间作为下一个字段插入数据库?

例如,我想要我的桌子看起来像

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 (?, ?, '?)";


  }
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38862
 
652 次点击  
文章 [ 4 ]  |  最新文章 4 年前
Gajanan Kolpuke
Reply   •   1 楼
Gajanan Kolpuke    5 年前

您可以先用逗号分隔符分解输入,然后对分解后的每个数组再次应用&Prepare array for inserting records。所以,直接导入在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));
Akshit Arora
Reply   •   2 楼
Akshit Arora    5 年前

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

因此,首先,我们将对每一行创建一个数组。

然后,在这些行中,我们将以一个空格的形式进一步扩展字段。

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... */
    }
}
RamRaider
Reply   •   3 楼
RamRaider    5 年前

如果我理解正确,那么下面的内容可能会有所帮助~尽管不清楚您使用的是哪种数据库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();
    }
RiggsFolly
Reply   •   4 楼
RiggsFolly    5 年前

输入数组实际上不是除在数组第一次出现时出现的逗号分隔字符串之外的任何字符串。

使用 mysqli_ 然而,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();
}

警告:如果字段本身包含空格,则不会按预期工作。

我强烈建议您查看如何创建该数组,并使每个记录显示在原始数组的自身发生中。