我使用以下代码来使用PDO填充数据库:
$stmt = $pdo->prepare("
INSERT INTO :season
VALUES
(
:tag,:rank, //and so on
);
");
for($l = 0; $l < count($data); $l++) {
$stmt->execute([
'season' => $tables[$i],
'tag' => $data[$l]["tag"],
'rank' => $data[$l]["rank"],
// and so on
]);
}
但我得到的回应是:
语法错误或访问冲突:1064 SQL语法中出错;查看与您的MariaDB服务器版本对应的手册,以便在#39;附近使用正确的语法。价值观(?,?,?,?,?,?,?,?,?)&#39;在第1行&#39;在E:\ XAMPP \ htdocs \ CoC_API \ legenden \ SQL_Test \ API_SQL.php
有人知道错误的位置吗?
我必须将每个条目都放在引号中吗?
答案 0 :(得分:1)
您以错误的方式绑定值。您必须在准备好的查询中使用:
的名称。您可以在execute
方法http://php.net/manual/en/pdostatement.execute.php
替换代码的这一部分
for($l = 0; $l < count($data); $l++) {
$stmt->execute([
'season' => $tables[$i],
'tag' => $data[$l]["tag"],
'rank' => $data[$l]["rank"],
// and so on
]);
}
用这个
for($l = 0; $l < count($data); $l++) {
$stmt->execute([
':season' => $tables[$i],
':tag' => $data[$l]["tag"],
':rank' => $data[$l]["rank"],
// and so on
]);
}
你也可以像这样使用bindValue
方法
for($l = 0; $l < count($data); $l++) {
$stmt->bindValue(':season', $tables[$i]);
$stmt->bindValue(':tag', $data[$l]["tag"]);
$stmt->bindValue(':rank', $data[$l]["rank"]);
//and so on
}
$stmt->execute();