1

可能重复:
您可以使用 PDO 在查询的选定部分中放置占位符吗?

我不喜欢问这么“简单”的问题,但是这段代码不起作用,我不知道为什么在尝试 1 小时后($this->DB 工作没有问题)。

此代码不起作用:

$STH = $this->DB->prepare("INSERT INTO chapters (subject_keyword, type, ?) VALUES (?, 'Introduction', ?)");
$STH->execute(array($this->Language, str_replace(' ', '_', $Title), $Introduction));
print_r($STH->ErrorInfo());

也不是扩展形式:

$t_lang = $this->Language;
$t_title = str_replace(' ', '_', $Title);
$t_intr = $Introduction;
$STH = $this->DB->prepare("INSERT INTO chapters (subject_keyword, type, ?) VALUES (?, 'Introduction', ?)");
$STH->execute(array($t_lang, $t_title, $t_intr));
print_r($STH->ErrorInfo());

并且返回的错误是:

DDC: 164Array ( [0] => 42000 [1] => 1064 [2] => 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在 ''en 附近使用的正确语法') VALUES ('Test_tittle', 'Introduction', ' \r\n 这是第 1 行的介绍 t')

该错误对我来说并没有多大意义,因为这几行 mysql 行似乎是正确的,除了 \r\n. 但我也尝试过htmlentities($Introduction)没有运气的其他事情。这里的所有变量都已设置并具有一些非空值。

4

1 回答 1

2

尝试:

$t_lang = $this->Language;
if (!in_array($t_lang, array('en', 'jp', ... Your other languages ...))) {
    throw new Exception(... Error message ...);
}
$t_title = str_replace(' ', '_', $Title);
$t_intr = $Introduction;
$STH = $this->DB->prepare("INSERT INTO chapters (subject_keyword, type, " . $t_lang . ") VALUES (?, 'Introduction', ?)");
$STH->execute(array($t_title, $t_intr));
print_r($STH->ErrorInfo());
于 2012-11-19T12:00:55.163 回答