ShineGoo 发表于 2016-6-10 14:57:13

PHP 批量入库的疑问.

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open("C:\Users\Desktop\data.db3");
         //打开本地数据库文件.
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
      //如果没有报错,返回值提示连接成功.
   }

/*=======================方法1===================*/
$stmt = $db->prepare("INSERT INTO foo (id, bar) VALUES (:name, :value)");
/*这里的占位符,能够调用变量实现批量插入么??*/
$name = 1;
$value = `asdasda`;
$stmt->execute();
/*==========================方法2===================*/
$as="James";
    $ab="100";
$sql = "INSERT INTO test (name,score) VALUES ('$as','$ab')";
/*=============这里可以调用变量,=======*/
/*=============但是如果改成$as="(James,100),(Andy,120),(Bily,90)" ,然后INSERT INTO test (name,score) VALUES$as; 还是容易插入不了*/
$stmt->execute();
$db->exec($sql);

/*===============================*/
$ret = $db->exec($sql);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      echo "Records created successfully\n";
      }
   $db->close();
?>

ShineGoo 发表于 2016-6-10 14:59:45

把数组变量拆分成('值1','值2','值3'),('值1','值2','值3'),,('值1','值2','值3'),('值1','值2','值3')
这样的字符串变量-S1.
然后执行sql语句,insert into tbale (列1,列2) values {-var.S1-}; 禁止转义.
这是可以批量入库的. 但是我有个脚本插入数据比较大,这样操作经常报错.
PHP 5.3.0 起默认启用 SQLite3 扩展,我能够连接本地db3文件,开启事务,和创建和插入数据.
但是填入,insert into tbale (列1,列2) values $data;
这样的语句不能实现批量入库,
输入$this->db->insert_batch()操作,也是上下文找不到实体的类.
调用变量入库 ,出现问题,谁能帮我解决一下??

keepeye 发表于 2016-6-12 11:17:43

用预处理语句只能用foreach一条条插入。想实现批量插入就必须拼接sql语句,那样不安全,并且sql语句长度是有限制的,你必须分批组装,比如一次组装100条,条数视你数据大小而言。
页: [1]
查看完整版本: PHP 批量入库的疑问.