看板 PHP 關於我們 聯絡資訊
小弟是PHP新手 想把關於PDO DB 包裝在class 檔 http://goo.gl/Ryb3mL __construct() 、SearchHashCode() 運作正常, 但是 SaveHashCode(),就出現 PHP Fatal error: Attempt to unset static property ImageDB::$pdo in saveImage.php on line 264 發現問題出在 $stmt = self::$pdo->prepare(" INSERT INTO FILE_LIST ....."); $stmt 是 false; 小弟不懂,哪裡出錯? 因為第一次玩php,按書操課,所以不了解pdo的操作特性, 請給予指導,謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.63.96.2
danny8376:這... 錯的好可怕=口= 09/11 19:37
danny8376:你的SQL語法... 完全錯誤啊!!!!!!!!! (X 09/11 19:42
danny8376:INSERT INTO XXXX 這個QUERY理的 VALUE 改成 VALUES 09/11 19:42
danny8376:再來試試看OwO? 09/11 19:42
danny8376:話說是用SQLite啊 09/11 19:44
danny8376:還有 是說個人比較喜歡用 ? 來表示參數 09/11 19:47
danny8376:給名字雖然方便讀 但是整個長很多 -3- 09/11 19:47
PsMonkey:都包物件了,$dbFile 不用傳值傳給 ctor 嗎? [完全離題 09/11 20:41
有!有!有! 我最外層先define $dbFile = "D:\phpWorkspace\db\sqlite.db" 然後 class ImageDB{ private static $pdo; function __construct(){ global $dbFile; ......... } 我用這種方法,傳值給ctor,因為我不知道PHP 的建構函式是否可以傳值?
danny8376:阿... 又看了一下... 09/11 22:06
danny8376:發現SQL語法確實有小錯... 但是... 09/11 22:07
danny8376:為啥為有 unset(self::$pdo); 啦! 錯誤都跟你說了 09/11 22:07
danny8376:Attempt to unset static property 09/11 22:08
danny8376:為啥會嘗試去unset一個類別裡的static var啦 09/11 22:10
danny8376:再說要是真的被unset掉了 也沒東西可以跑prepare了啦 09/11 22:11
danny8376:話說樓上也是個好問題 都包物件了 卻寫死頗怪啊XD 09/11 22:13
謝謝danny 大德 我SQL 給錯指令了, (羞羞臉) 修正以後 $stmt = self::$pdo->prepare(" INSERT INTO FILE_LIST ..... $stmt 不再是false,而且後面也順了... 至於unset 是我東試西搞,因為找不出問題,胡亂加上去,看看是不是這狀況, 放demo 時忘了拿走 順便問一下 當我做完一個sql 不管是select 還是 insert 是不是都要 把 PDOStatement unset ? 不做會不會出問題? ※ 編輯: pttnews 來自: 210.63.96.2 (09/12 11:18)
danny8376:恩... 這位大大啊... 那個語言的constructor不能 09/12 14:04
danny8376:下參數啊... 難不成還設計成內部專用? 09/12 14:04
danny8376:(總不至於OO了還不能給參數new自己要的東西吧?) 09/12 14:05
danny8376:都物件化了 就都給GC自己去處理就好 09/12 14:09
danny8376:然後每個statement都是獨立的 不過要多次的execute 09/12 14:10
danny8376:要看DB了 不過連續execute有問題也就加行closeCursor() 09/12 14:11
danny8376:說真的 有點不知剛剛在回啥XD 09/12 14:12
我了解~ 謝謝danny 大 ※ 編輯: pttnews 來自: 210.63.96.2 (09/13 09:37)