【问题标题】:Multiple INSERT queries using PDO & SQLite使用 PDO 和 SQLite 的多个 INSERT 查询
【发布时间】:2011-05-26 18:08:47
【问题描述】:

我有这个 sqlite3 数据库:

CREATE TABLE links (
 id INTEGER PRIMARY KEY AUTOINCREMENT,
 name TEXT UNIQUE,
 link1 TEXT,
 link2 TEXT,
 link3 TEXT
);

我正在尝试在同一个查询中插入多个条目,这是我的代码:

$db = new PDO('sqlite:db.sqlite');

$sql = "INSERT INTO links VALUES";

$filelines = file('filename');

foreach($filelines as $key => $line)
{
 if(count($filelines)-1==$key)
  $sql .= "(NULL, '".trim($line)."', '', '', '');";
 else
  $sql .= "(NULL, '".trim($line)."', '', '', ''),";
}

$insert = $db->prepare($sql);

$insert->execute();

单次插入工作正常,但使用此代码我得到 php 错误:

在非对象上调用成员函数 execute()

我也尝试过创建 'VALUES(...,...), VALUES(...,...),... 之类的 sql 查询,但得到相同的错误:

我做错了什么?

【问题讨论】:

    标签: php database sqlite


    【解决方案1】:

    SQLite 不支持 VALUES (...), (...), (...) 语法(请参阅 the docs )。因此,每个INSERT 查询只需执行一行...

    错误本身的原因是因为有查询错误,PDO::prepare()returns false。您应该检查它以确保 ->prepare() 调用有效:

    $insert = $db->prepare($sql);
    
    if (!$insert) {
        die($db->errorInfo());
        // Or you could throw an exception, or otherwise handle the error...
    }
    
    $insert->execute();
    

    【讨论】:

    猜你喜欢
    • 2020-02-10
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    相关资源
    最近更新 更多