前のセクションでは、データの一部が追加されました。バッチ追加では、foreach ループを走査して追加するだけで済みます。
コード
<?php //绑定参数 $stmt->bindParam(1,$name); $stmt->bindParam(2,$author); //单条插入 //$name='java基础教程'; //$author='smile4'; //$stmt->execute(); //批量插入 $data=array( array('php预处理批量添加教程1','smile'), array('php预处理批量添加教程2','smile'), array('php预处理批量添加教程3','smile'), ); foreach ($data as $row){ $name=$row[0]; $author=$row[1]; $stmt->execute(); }
完全なコードは次のとおりです:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/5 0005 * Time: 上午 9:23 */ header("Content-Type:text/html;charset=utf-8"); //mysql:host:localhost;port=3306;dbname=php;charset=utf-8 $dbms='mysql'; $host='localhost'; $port='3306'; $dbname='php'; $charset='utf-8'; //用户名与密码 $user='root'; $pwd='root'; $dsn="$dbms:host=$host;port=$port;dbname=$dbname;charset=$charset"; try{ $pdo=new PDO($dsn,$user,$pwd); //预处理sql语句 $stmt=$pdo->prepare("insert into book(name,author)values(?,?)"); //绑定参数 $stmt->bindParam(1,$name); $stmt->bindParam(2,$author); //单条插入 //$name='java基础教程'; //$author='smile4'; //$stmt->execute(); //批量插入 $data=array( array('php预处理批量添加教程1','smile'), array('php预处理批量添加教程2','smile'), array('php预处理批量添加教程3','smile'), ); foreach ($data as $row){ $name=$row[0]; $author=$row[1]; $stmt->execute(); } //$sql='select *from book'; //$result=$pdo->query($sql); //$row=$result->fetchAll(PDO::FETCH_ASSOC); //echo "<pre>"; //print_r($row); //echo "</pre>"; }catch (PDOException $exception){ echo $exception->getMessage().'<br>'; }
実行結果の表示:
#execute() 関数にパラメータを追加することもできます。パラメータのタイプは配列です。パラメータの要素の数は、配列はプレースホルダーの数と同じである必要があります
すべてのコード表示: #
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/5 0005 * Time: 上午 9:23 */ header("Content-Type:text/html;charset=utf-8"); //mysql:host:localhost;port=3306;dbname=php;charset=utf-8 $dbms='mysql'; $host='localhost'; $port='3306'; $dbname='php'; $charset='utf-8'; //用户名与密码 $user='root'; $pwd='root'; $dsn="$dbms:host=$host;port=$port;dbname=$dbname;charset=$charset"; try{ $pdo=new PDO($dsn,$user,$pwd); //预处理sql语句 $stmt=$pdo->prepare("insert into book(name,author)values(?,?)"); //绑定参数 //$stmt->bindParam(1,$name); //$stmt->bindParam(2,$author); //单条插入 //$name='java基础教程'; //$author='smile4'; //$stmt->execute(); //批量插入 $data=array( array('php预处理批量添加教程1','smile'), array('php预处理批量添加教程2','smile'), array('php预处理批量添加教程3','smile'), ); foreach ($data as $row){ // $name=$row[0]; // $author=$row[1]; $stmt->execute($row); } //$sql='select *from book'; //$result=$pdo->query($sql); //$row=$result->fetchAll(PDO::FETCH_ASSOC); //echo "<pre>"; //print_r($row); //echo "</pre>" }catch (PDOException $exception){ echo $exception->getMessage().'<br>'; } ;
Note:上記の分析 取得したexecute()コードは、「?」プレースホルダーを使用して複数のデータを渡すときに使用される配列インデックスを知ることができます。 、これは
array(
array('php 前処理バッチ加算チュートリアル 1','smile'), array('php 前処理バッチ加算チュートリアル 2', 'smile'), array('php前処理バッチ加算チュートリアル3','smile'),
);
type array
(:パラメータ名)のプレースホルダーを使用する場合)、複数の項目を挿入する場合は、連想配列を使用する必要があります。つまり、配列インデックスは特定の型付きデータです
array(
array(") name"=>'php 前処理バッチ追加チュートリアル 1',"author "=>'smile'),
# array("name"=>'php 前処理バッチ追加チュートリアル1',"author"=>'smile'),
## array("name"=>'php 前処理バッチ追加チュートリアル 1',"author"=>'smile ')
);