我通常使用PDO與new PDO('sqlite:test.log');來用PHP在Sqlite3資料庫中寫作。
現在,為了進行性能比較,我想嘗試使用SQLite3 PHP類 :
$db = new SQLite3('test.db')。
$db->query("CREATE TABLE IF NOT EXISTS log (a, b, d);"/span>)。
$stmt = $db->prepare("INSERT INTO log VALUES (?, ?, ?);")。
$stmt->execute(array("a"/span>, date("Y-m-dTH: i:sO"),123))。)
不幸的是,在執行這段代碼后,似乎什么都沒有被寫。SELECT * from log沒有得到任何記錄。
我的代碼有什么問題嗎?
我還嘗試了$db->commit();或者$db->query('COMMIT;'),都沒有成功。
背景關系。我通常使用PDO,但我注意到簡單的1)打開DB,2)添加一行,3)提交和關閉需要50ms。所以我很好奇,用Sqlite3類代替PDO會不會更好。結果:是一樣的:~ 50 ms。
uj5u.com熱心網友回復:
與PDO不同,你不能在$stmt->execute()的引數中提供引數,你必須呼叫$stmt->bindParam()或者$stmt->bindValue()。
$stmt = $db->prepare("INSERT INTO log VALUES ( ?, ?) ;"/span>) 。
$stmt->bindValue(1, "a"/span>)。
$stmt->bindValue(2, date("Y-m-dTH:i:sO") 。)
$stmt->bindValue(3, 123)。
$stmt->執行()。
如果你有一個陣列的值,你可以在一個回圈中呼叫bindValue():
foreach (array("a"/span>, date("Y-m-dTH: i:sO"), 123) AS $i => $value) {
$stmt->bindValue($i 1, $value) 。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/321600.html
標籤:
