如何使用PHP将数组插入SQL?

时间:2017-02-22 01:25:04

标签: php mysql

我有一个像:

这样的数组
$arrays = array(
array('id' => '1','Name' => 'Monica','online' => '1'),
array('id' => '2','Name' => 'Jessica','online' => '1')
);

我只包括2,但我们说我有200个。我已经在SQL中有一个表,其中包含关联列id,name和online。

你能帮我把这些输入数据库吗?我正在使用wordpress进行开发。从Insert array into MySQL database with PHP开始,我知道如何为1个单一数组做

2 个答案:

答案 0 :(得分:2)

如果您有阵列,则需要使用foreach循环来了解插入的长度内容。

这是插入的一个例子:

if(is_array($array)){

    $sql = "INSERT INTO some_table (id, name, online) values ";

    $valuesArr = array();
    foreach($array as $row){

        $id= (int) $row['id'];
        $email = mysql_real_escape_string( $row['name'] );
        $name = mysql_real_escape_string( $row['online'] );

        $valuesArr[] = "('$id', '$email', '$name')";
    }

    $sql .= implode(',', $valuesArr);

    mysql_query($sql) or exit(mysql_error()); 
}

答案 1 :(得分:1)

请试一试。

使用PDO示例

$sql = <<<EOT
INSERT IGNORE INTO
       table_name (id, name, online)
   VALUES
       (:id, :name, :online)
;
EOT;
define("INSERT_UPDATE_SQL", $sql,true);


try{

    $con = new PDO(CONNECTION_STRING);

    if(is_array($arrays)){

        $stmt = $con->prepare(INSERT_UPDATE_SQL);
        $stmt->bindParam(':id', $id);
        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':online', $online);

        foreach($arrays as $row){
            $id = (int)$row['id'];
            $name = $row['Name'];
            $online = $row['online'];

            $stmt->execute();
        }
        $stmt = null;
    }

    $con = null;
}catch (PDOException $e) {
    echo 'error !!';
    throw $e;
}

如果已经注册,则不会更改。