【问题标题】:inserting multiple rows in sqlite using implode [duplicate]使用内爆在sqlite中插入多行[重复]
【发布时间】:2013-05-15 10:43:38
【问题描述】:

我尝试插入多行,但在数据库中出现空行和其他错误。 所以,尝试使用 implode(作为更好的选择?)但这里肯定做错了。

$sql = array(); 
    foreach($_POST as $key => $value ) {
        $sql[] = '("'.sqlite_escape_string($key['cust_name']).'", '.$key['address'].')';
    }

    $stmt = $db->prepare('INSERT INTO customers VALUES (cust_name, address) '.implode(','. $sql));
    $stmt->execute($sql); 

【问题讨论】:

  • 不确定您是否可以使用PDO 进行此类准备工作。如果可以,您将需要更多代码。
  • 啊哈,那我应该怎么做呢,接近这个了?
  • 可能会进行搜索,因为这个有多个问题...PDO Prepared Inserts multiple rows in single query

标签: php sqlite rows implode


【解决方案1】:

执行以下操作会更好吗?

<?php

$into = "";
$values = "";

$cnt = 0;
$post_cnt = count($_POST);
foreach($_POST as $key => $value) {
    $into .= sqlite_escape_string($key).($cnt < $post_cnt && $post_cnt > 1 ? ", ": "");
    $values .= "'".sqlite_escape_string($value)."'".($cnt < $post_cnt && $post_cnt > 1 ? ", ": "");
    $cnt++;
}
$sql = "INSERT INTO customers (".$into.") VALUES (".$values.");";

$stmt = $db->prepare($sql);
$stmt->execute();

【讨论】:

  • 好的,所以 $into 将是列名,但它们不匹配,所以看不出我应该如何使用它?
  • 顶部的 $into 和 $values 只是声明一个空字符串,您不会填写它们。 $into 由 $_POST 键设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-03
  • 2011-04-23
  • 1970-01-01
  • 2010-12-03
  • 2020-03-30
  • 1970-01-01
相关资源
最近更新 更多