php sqlite3 sql,在PHP中准备SQLite SQL语句
我正在嘗試如何最好地在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”, ”Does this work”, 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);
這導致:
INSERT INTO items (“id”,”content”,”title”,”created”) VALUES
(“4e7ce7c18aac8”, “Does this work”, 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 error: syntax error, unexpected T_VARIABLE, expecting ‘,’
or ‘;’
我該怎么接近這個?請記住,在實際代碼中,我的參數值將是變量,所以我應該在將每個變量傳遞給字符串之前將其轉義?如果是這樣,我會使用什么功能?
最后,escapeString()有什么意義?我無法弄清楚應該如何正確使用它.
解決方法:
您無法轉義整個查詢.您可以轉義要插入查詢的不安全數據,例如
$unsafe = $_GET['nastyvar'];
$safe = SQLite3::escapeString($unsafe);
$sql = "INSERT INTO table (field) VALUES ($safe);";
echo ($sql);
標簽:php,sql,sqlite,escaping,escapestring
來源: https://codeday.me/bug/20190716/1482165.html
總結
以上是生活随笔為你收集整理的php sqlite3 sql,在PHP中准备SQLite SQL语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java临时的api,JAVA API-
- 下一篇: 禅道需要启动php么,2.使用说明与示例