【PHP】下らねぇ質問はここに書き込みやがれ 8at TECH
【PHP】下らねぇ質問はここに書き込みやがれ 8 - 暇つぶし2ch731:デフォルトの名無しさん
17/10/18 05:41:41.19 IAqZZNli0.net
>>706
少し紛らわしかったので補足します。
705のコードはSQLite3では意図したようには動きません。
ただしMySQL等他DBなら動くようです。(FOR UPDATEはSQLite3ではエラー)
URLリンク(dba.stackexchange.com)
或いは以下の書き方も出来るようです。
$sql .= "UPDATE counters SET count = (@cur_value := count)+1 WHERE id = 'post';";
$sql .= "SELECT @cur_value;";
URLリンク(www.sqlines.com)
問題はSQLite3ではこれらが出来ないことです。
ググル限り、UPDATEとINSERTの戻り値はAndroidでは取れており、
URLリンク(naichilab.blogspot.jp)
URLリンク(android.roof-balcony.com)
これらはPHPでは SQLite3::changes SQLite3::lastInsertRowID であり、
rowID===INTEGER PRIMARY KEY なので、INSERTして取る方法でとりあえず回避しました。
URLリンク(www.dbonline.jp)
URLリンク(www.sqlite.org)
以下コードになります。
$sql .= "BEGIN EXCLUSIVE;";
$sql .= "INSERT INTO logs VALUES ((SELECT count FROM counters WHERE id = 'post'), date('now'), '$data');";
$sql .= "UPDATE counters SET count = count+1 WHERE id = 'post';";
$sql .= "COMMIT;";
$result = $db->exec($sql);
var_dump($db->lastInsertRowID());
カウンタに対して2回クエリしているのが無駄なんですが、何とかなりませんかね?
(とはいえこちらは我慢できる範囲ですが)
なおスレ毎にtableを分ける予定ですのでAUTOINCREMENTには出来ません。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch