相关疑难解决方法(0)

如何使用PHP和PDO将数组插入到单个MySQL Prepared语句中

在线注册期间,客户可以选择他们选择注册的多个节目.这些程序是三位整数,存储在一个数组中.

例如:

我想加入programid 155,165,175和185.

我的数组设置简单如下:

$data = array();

$data[] = 155;

$data[] = 165;

$data[] = 175;

$data[] = 185;
Run Code Online (Sandbox Code Playgroud)

当需要将此信息插入关联表时,我还会在注册的其他部分中包含其他元素:

例如,如果我正在执行SINGLE程序插入语句,它将如下所示:

$stmt = $db->prepare("INSERT INTO table SET memberID=?, programID=?, date_added=NOW()");
$stmt->execute(array($memberid, 155));
Run Code Online (Sandbox Code Playgroud)

我通常会为上面的数组创建一个简单的循环,它将调用sql语句的多个实例并执行如下:

for($j = 0; $j < (count($data)-1); $j++) {
   $stmt = $db->prepare("INSERT INTO table SET memberID=?, programID=?, date_added=NOW()");
   $stmt->execute(array($memberid, $data[$j]));
}
Run Code Online (Sandbox Code Playgroud)

我确实意识到上面的代码是无效的($ data [$ j])但是正在寻找正确的方式来进行调用.

我之前也被告知,构建单个动态sql语句总体上比上面的多个调用要好.我的第一次传球将是这样的:

$sql = array(); 
foreach( $data as $row ) {
    $sql[] = '("'.$memberid.'", "'.$row[$j].'", NOW()")';
}
mysql_real_query('INSERT INTO table (memberid, programid) VALUES …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo loops

16
推荐指数
2
解决办法
4万
查看次数

PHP PDO 从多维数组批量插入未能插入 MySQL

我有一个这样的数组,它包含很多行,我需要使用 PDO 将它插入到 MySQL 数据库中

array(3067) {
  [0]=>
  array(2) {
    ["order"]=>
    string(7) "2854811"
    ["consignment"]=>
    string(0) ""
  }
  [1]=>
  array(2) {
    ["blah"]=>
    string(7) "2854811"
    ["whatever"]=>
    string(2) "someval"
  }
  [4]=>
  array(2) {
    ["blah"]=>
    string(7) "2864412"
    ["whatever"]=>
    string(0) ""
  }
Run Code Online (Sandbox Code Playgroud)

我尝试了此处提出的各种建议组合,但每个建议都会收到不同的错误消息

php PDO使用占位符批量插入多行

PDO MySQL:在一个查询中插入多行

我试过这个

$db->beginTransaction();

$stmt = $db->prepare("INSERT INTO mytable (column1, column2) VALUES (:blah, :whatever)");

foreach($test as $insertRow){

    // now loop through each inner array to match binded values
    foreach($insertRow as $column => $value){
        $stmt->bindParam(":{$column}", $value);
        $stmt->execute();
    }
}

$db->commit();
Run Code Online (Sandbox Code Playgroud)

但我收到此错误消息 …

php mysql sql pdo bulkinsert

2
推荐指数
1
解决办法
4681
查看次数

标签 统计

mysql ×2

pdo ×2

php ×2

bulkinsert ×1

loops ×1

sql ×1