【发布时间】:2018-11-28 10:32:10
【问题描述】:
我正在使用以下代码将一堆记录插入到 sqlite 数据库中:
try {
$dir = 'sqlite:file_name';
$dbh = new PDO($dir) or die("cannot open the database");
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$query_str = 'DELETE FROM mytable; INSERT INTO mytable (field1, field2, field3, field4, field5, field6, field7, field8, field9) VALUES ';
$query = $dbh->prepare( $query_str . $valuesPlaceholders);
$sqlResponse = $query->execute($valuesArr);
}
catch (PDOException $e) {
if ($e->getCode() == 1062) {
echo 'here';
} else {
throw $e;
}
这是 $valuesPlaceholders:
(?, ?, ?, ?, ?, ?, ?, ?, ?),(?, ?, ?, ?, ?, ?, ?, ?, ?),(?, ?, ?, ?, ?, ?, ?, ?, ?)
这是我的$valuesArr:
Array
(
[0] => Array
(
[0] => temperature
[1] => M1
[2] => 40110
[3] => 100
[4] => 500
[5] => 200
[6] => 300
[7] => 1
[8] => C
)
[1] => Array
(
[0] => humidity
[1] => M1
[2] => 40114
[3] => 100
[4] => 500
[5] => 200
[6] => 300
[7] => 1
[8] => %
)
[2] => Array
(
[0] => param111
[1] => M2
[2] => 40115
[3] => 100.5
[4] => 500
[5] => 200
[6] => 300
[7] => 0.1
[8] => uni
)
)
这给了我以下错误:
数组到字符串的转换
PDOStatement::execute(): SQLSTATE[HY000]: 一般错误:25 列索引超出范围
表结构由10列组成,其中1列id为自增列。
我做错了什么?
【问题讨论】:
-
您不能使用 PDO 执行多个查询
-
@RiggsFolly 我检查了这个:stackoverflow.com/questions/1176352/…
-
您正在尝试运行 两个 查询 1) DELETE 和 2) INSERT
-
我什至使用一维数组绑定,即使这会导致索引超出范围错误
-
@u_mulder ,执行函数需要一个包含字符串或数字的一维数组是否正确,但他输入的数组中包含数组,因此它尝试将每个内部数组转换为字符串.因为这就是它想要的:带有数字或字符串的一维数组,而不是数组?