首页 > 解决方案 > 从php数组插入sqlite行

问题描述

所以我正在尝试编写一个通用的sqlite插入,无论一行有多少项目都可以使用。这是针对单行的,假设除 ID(设置为自动递增整数)之外的所有列都已分配,并且必须使用 bindparam。我一直在尝试这样:

Table Quarterbacks
ID---firstName---lastName

public static function insert($table, $values)
{
    $pdo = new PDO('sqlite:testTable.sqlite');
    $inputString = implode(",", $values);
    $statement = $pdo->prepare("insert into $table values (:value)");
    $statement->bindParam(':value', $inputString);
    $statement->execute();
}
$new = array("Steve", "Young");
Query::insert("Quarterbacks", $new);

这个想法是该表现在将添加一个新行,增加 ID,并添加 Steve Young。但是我得到了准备语句是错误的一般错误。我知道我的 pdo 正在连接到数据库,因为其他测试方法有效。那里有很多与数组相关的线程,但似乎它们比我想要做的要复杂得多。我很确定它与将单个字符串视为无效有关,但它也不会将字符串数组作为值。

编辑:我开始倾向于像 bash 这样的折衷方案,即提供大量但不是无限量的函数参数。也对 ...$ 风格开放,但我觉得这最终会遇到与现在相同的问题。

我能够让它工作

$name = "('daunte' , 'culpepper')";
$cats = "('firstName', 'lastName')";
$statement = $pdo->prepare("insert into $table" .$cats ." values" .$name);
$statement->execute();

但不是这个

$name = "('reggie' , 'wayne')";
$cats = "('firstName', 'lastName')";
$statement = $pdo->prepare("insert into $table:cats values:name");
$statement->bindParam(':cats', $cats);
$statement->bindParam(':name', $name);
$statement->execute();

标签: phparrayssqlite

解决方案


推荐阅读