从php数组中插入sqlite行

从php数组中插入sqlite行,php,arrays,sqlite,Php,Arrays,Sqlite,因此,我试图编写一个通用的sqlite插入,无论一行有多少项,都可以使用它。这是针对单行的,假设除设置为自动递增整数的ID之外的所有列都已赋值,并且必须使用bindparam。我一直在这样尝试: Table Quarterbacks ID---firstName---lastName public static function insert($table, $values) { $pdo = new PDO('sqlite:testTable.sqlite'); $input

因此,我试图编写一个通用的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。但是我得到了一个普遍的错误,prepare语句是假的。我知道我的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();

我认为您必须对表本身执行select以将列名放入数组,然后在prepare insert语句中以类似方式绑定列名。您能解释一下必须使用bindParam的限制吗?更简单的方法是将参数作为参数传递给execute()。另外,请确定,您是要将
$values
数组中的所有值插入一列,还是将每个值插入一个单独的列?@Don'tPanic我添加了一个编辑以使其更清晰,但每个值都在单独的列中。不幸的是,除了select查询之外,任何查询都缺少bindParam,因此该教授的自动赋值分数为0。