Fold All / Expand All

2013年5月11日 星期六

PHP PDO::lastInsertId, pgsql requires name parameter

PDO::lastInsertId

string PDO::lastInsertId ([ string $name = NULL ] )
Returns the ID of the last inserted row, or the last value from a sequence object, depending on the underlying driver. For example, PDO_PGSQL() requires you to specify the name of a sequence object for the name parameter.

PDO::lastInsertId() 這支的 name 參數在其他 db backend 可能可以不填,但是在 pgsql 的話,不填只會回傳 "0"。

為什麼呢?直接來看 PHP source code 吧。

https://github.com/php/php-src/blob/php-5.3.25/ext/pdo_mysql/mysql_driver.c#L319
MySQL 用「mysql_insert_id()」,不需要 name parameter。

https://github.com/php/php-src/blob/php-5.3.25/ext/pdo_sqlite/sqlite_driver.c#L222
SQLite 用「sqlite3_last_insert_rowid()」,一樣不需要 name parameter。

https://github.com/php/php-src/blob/php-5.3.25/ext/pdo_pgsql/pgsql_driver.c#L345
PostgreSQL 看到 name == NULL,就回傳 "0"。
有 name 才透過「SELECT CURRVAL($1)」拿到我們要的數值。

RETURNING clause, to get last insert id

最近聽到可以在 SQL Insert 時,加上 RETURNING clause,讓 insert 的 row 傳回 id,對於 id 是用 auto increment 的欄位,在 insert 後想要馬上再 update 非常的方便。

這麼好用的東西怎麼以前都沒聽過呢?查了一下後發現,原來 RETURNING clause 不是 SQL standard ,目前看到是 Oracle 和 PostgreSQL 有支援。

在 PHP 使用 PDO 的話,有 PDO::lastInsertId 可以拿到剛 insert 的 id,不過 PHP 文件上也有寫,這個 method 要看後面接的 db backend,有可能不會回傳正確可用的值 XD
This method may not return a meaningful or consistent result across different PDO drivers, because the underlying database may not even support the notion of auto-increment fields or sequences.
MySQL 有「LAST_INSERT_ID()」 ,例如「SELECT LAST_INSERT_ID();」

SQLite 則是「last_insert_rowid()」,對應的 C ineterface 「sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);

東京瓦斯愛情故事

東京瓦斯愛情故事 CM 總集編 (繁中)



東京瓦斯愛情故事 CM 「小聰入贅?」30s (繁中)
在東幹久出現和平交道中間那集



東京瓦斯愛情故事2 第一話 〜地板和心都暖了〜


東京瓦斯愛情故事2 第二話 ~把愛灌注在土鍋~


東京瓦斯愛情故事2 第三話 ~戀愛的你是安全的~


東京瓦斯愛情故事2 第四話 ~今夜在MISTY中愛相擁~

2013年5月5日 星期日

手機價格 2013-05-05

上次

手機價格 2013-04-12


Padfone infinity, 64G
PChome: $22990
地標網通: $22390

Padfone infinity, 32G
PChome: $20990
地標網通: $19790

Padfone 2, 64G
PChome: $20901

Padfone 2, 32G
PChome: $18901
地標網通: $14900
日進網通: $14790

HTC One, 32G
PChome: $21900
日進網通: $22890

HTC One, 16G
PChome: $19900
日進網通: $19900

HTC Butterfly
PChome: $21900
地標網通: $19500
日進網通: $19390

Sony Xperia Z
PChome: $21900
地標網通: $18500
日進網通: $18390

Sony Xperia T
PChome: $12990
日進網通: $10990

Samsung Galaxy S4, 16G
PChome: $21900
地標網通: $19900
日進網通: $20390

Samsung Galaxy S4, 32G
PChome: $23900
日進網通: $23900

Xperia Ultimate HD 3.0.2

Xperia Ultimate HD 3.0.2
http://forum.xda-developers.com/showthread.php?t=1947420

之前是刷了 Xperia Ultimate HD 2.0.3,想說有新版,來試看看,結果一開始完全不行啊…

原本應該是蠻簡單的步驟,先下載好 UHD 3.0.2 zip 檔,放進手機 sd card,將手機開進 CWM (ClockWorkMod Recovery),按照 xda 上的說明,wipe 相關設定,然後再安裝 zip 檔即可,結果裝完之後,手機就開不了機啊……

只好找官方 ROM 先刷回來,但是 Xperia Neo 官方 Android 4.0.4 就是…不順嘛。

過了幾天,想說再來嘗試,依舊是會卡在開機,想說不然換個 ROM 來試試,就用了這個
Zelly Cream v2.5
http://forum.xda-developers.com/showthread.php?t=2151692

刷完結果一樣…,於是再嘗試不同的 Kernel,這時發現,用不同的 Kernel ,開不了機的結果一樣,不過出現的症狀不同 XD。

The Alliance kernel mod for ICS (V1.5)
http://forum.xda-developers.com/showthread.php?t=1566871
這個是 SONY 字樣出現後,畫面一直是黑的,Neo 的按鈕處會亮白燈,過一會先會閃一下,再繼續亮白燈。

LuPuS
http://forum.xda-developers.com/showthread.php?t=2072405
LuPuS 圖示出現後,直接進入 CWM,進不到 Xperia 畫面。

Suave Kernel
http://forum.xda-developers.com/showthread.php?t=1708532
不停重開,SONY 字樣會一直出現。

仔細看了 Zelly Cream 安裝步驟,裡面有提到 Unlocked BL 在全新安裝 v2.5 時,要先刷 .587 ftf 以避免不停重開機,於是下載了文章中的 Neo V FTF 檔,是的,裡面是寫這個也適用 Neo ,不過我想因為是暫時的吧,待會就要刷掉了。

於是先刷 .587 ftf,刷 Suave Kernel,開機進 CWM,wipe 相關後安裝 zip 檔,再重開機,這次就成功啦!

不然 Zelly Cream 試用了一下,順暢度是 ok,不過有些設定的地方不習慣,其中一個不知道是我沒找到還是怎樣,要設定鬧鐘時,竟然沒辦法從音樂庫選擇!?只能用內建鈴聲,這…我不能接受啊,所以重開機進 CWM 刷成 Ultimate HD 3.0.2,這次也成功啦。

看來真的是差在一開始要先刷 .587 ftf?

因為之前有用過 Ultimate HD 2.0.3 了,所以 3.0.2 用起來還蠻習慣的,不過 Neo 這台本身硬體限制,開某些遊戲的時候,就是會頓頓的啊,這應該只有換新機才能解決了。

2013年5月1日 星期三

Flash tool for Xperia devices 官方韌體工具

Flash tool for Xperia™ devices
http://developer.sonymobile.com/services/flash-tool/

想要刷回官方版本韌體,可以使用這個工具,不過目前支援的機種有限…
http://developer.sonymobile.com/services/flash-tool/supported_phones/

官方 YouTube 教學影片


所以Xperia Neo還是用另一套 Android 知名的 Flashtool來刷吧
http://androxyde.github.io/