我正在尝试如何最好地在 PHP 中准备我的 SQLite SQL 字符串。SQLite3 类带有一个escapeString()函数,但这是我的问题:
试试 1)
$sql = "INSERT INTO items ('id','content','title','created') VALUES ('4e7ce7c18aac8', 'Does this work', NULL, '2011-09-23T16:10:41-04:00');";
$sql = SQLite3::escapeString( $sql );
echo ($sql);
这会导致一个字符串全部被顶起:
INSERT INTO items (''id'',''content'',''title'',''created'') VALUES (''4e7ce7c18aac8'', ''这个工作吗'', NULL, ''2011- 09-23T16:10:41-04:00'');
这些不是双引号,而是双引号。显然行不通。
试试 2)
$sql = 'INSERT INTO items ("id","content","title","created") VALUES ("4e7ce7c18aac8", "Does this work", NULL, "2011-09-23T16:10:41-04:00");';
$sql = SQLite3::escapeString( $sql );
echo ($sql);
这导致:
插入项目(“id”,“content”,“title”,“created”)值(“4e7ce7c18aac8”,“这个工作”,NULL,“2011-09-23T16:10:41-04:00”) ;
此查询工作正常,但 escapeString 函数没有修改任何内容,因为没有什么可以转义......
试试 3)
$sql = 'INSERT INTO items ("id","content","title","created") VALUES ("4e7ce7c18aac8", "Doesn't this work", NULL, "2011-09-23T16:10:41-04:00");'; $sql = SQLite3::escapeString( $sql ); echo ($sql);
这是一个大问题 - 现在我的一个价值观中有一个撇号。它甚至不会让它成为 escapeString() 因为 PHP 会在无效字符串上抛出一个错误:
PHP Parse 错误:语法错误,意外的 T_VARIABLE,期望 ',' 或 ';'
我应该如何接近这个?请记住,在实际代码中,我的参数值将是变量,所以我应该在将每个变量传递到字符串之前对其进行转义吗?如果是这样,我使用什么功能?
最后,escapeString() 的意义何在?我无法弄清楚它应该如何正确使用。