PHP 生成动态 PDO 插入

标签 php mysql pdo

以下代码应将数组中的每个键值对插入表中的数学列值。该脚本没有返回任何错误,但插入的行仅包含数组中的最后一个值

例如

array('one'=>1,'two'=>2,'three'=>3);

成功地将行插入到包含第一列、第二列和第三列的表中,但总共插入值 3。

    $columns = array();
    $bind = '';
    foreach($array as $key => $value){

        $columns[] = $key;

    }

    $columnString = implode($columns,',');
    $valueString = implode($columns,',:');
    $valueString = ':' . $valueString;

    $core = core::getInstance();
    $STH = $core->dbh->prepare("INSERT INTO table (" . $columnString . ") VALUES 
    (" . $valueString . ")");

    foreach($array as $key => $value){

        $STH->bindParam(':' . $key,$value);
    }

最佳答案

忘掉bindParam,只需使用execute 并将$array 的值传递给它:

$STH->execute($array);

或者,您可以完全删除命名参数以稍微简化您的代码:

$columnString = implode(',', array_keys($array));
$valueString = implode(',', array_fill(0, count($array), '?'));

$STH = $core->dbh->prepare("INSERT INTO table ({$columnString}) VALUES ({$valueString})");
$STH->execute(array_values($array));

关于PHP 生成动态 PDO 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12019826/

相关文章:

php - 在页面模板上使用工作分页的自定义 wp_query

PHP - 开始准备语句,但它们看起来很笨重

mysql - 哪个数据库可以用来存储NLP引擎处理过的数据

php - 如何跨多个类访问PDO连接对象?[php +Mysql]

php - MySQL int 字段在 DGNews 命中计数器中自动重置

php - 我能知道MySQL全文搜索结果的准确性吗?

mysql - 插入之前检查数据是否存在并返回 true/false?

mysql - 如何在 SQL 中连接多个需要按时间过滤的表?

php - 在 Mac OSX 上启用 PHP pdo_odbc 扩展

php - 为什么我的 PDO 查询失败?