SQLite3 escapeString失败,生成多个单引号

时间:2014-05-19 15:54:25

标签: php sqlite

$id = $_POST['id'];
$text = $_POST['body'];
$id = SQLite3::escapeString($id);
$text = SQLite3::escapeString($text);

$query = "INSERT OR REPLACE INTO messageTable (messageId, userId, body) VALUES ('$id', '$userId', '$text')";

$db->query($query);

此处提供的答案escaping strings for SQLite3 in PHP5对我不利,因为我无法使用PDO。

当字符串具有单引号时,上面的代码总是将单引号的数量加倍。例如,I'm asking a question in 'stackoverflow'将导致I''m asking a question in ''stackoverflow''

1 个答案:

答案 0 :(得分:2)

'字符是SQLite(和其他一些数据库)中'字符的转义字符:

SQL As Understood By SQLite

  

通过将字符串括在单引号中形成字符串常量   (&#39)。 字符串中的单引号可以通过放置两个来编码   连续单引号 - 与Pascal一样C风格逃脱使用   不支持反斜杠字符,因为它们不是标准字符   SQL。