作者pttnews (PTT新聞)
看板PHP
標題[請益] PDO insert to sqlite
時間Wed Sep 11 18:52:41 2013
小弟是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
1F:→ danny8376:這... 錯的好可怕=口= 09/11 19:37
2F:→ danny8376:你的SQL語法... 完全錯誤啊!!!!!!!!! (X 09/11 19:42
3F:→ danny8376:INSERT INTO XXXX 這個QUERY理的 VALUE 改成 VALUES 09/11 19:42
4F:→ danny8376:再來試試看OwO? 09/11 19:42
5F:→ danny8376:話說是用SQLite啊 09/11 19:44
6F:→ danny8376:還有 是說個人比較喜歡用 ? 來表示參數 09/11 19:47
7F:→ danny8376:給名字雖然方便讀 但是整個長很多 -3- 09/11 19:47
8F:推 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 的建構函式是否可以傳值?
9F:→ danny8376:阿... 又看了一下... 09/11 22:06
10F:→ danny8376:發現SQL語法確實有小錯... 但是... 09/11 22:07
11F:→ danny8376:為啥為有 unset(self::$pdo); 啦! 錯誤都跟你說了 09/11 22:07
12F:→ danny8376:Attempt to unset static property 09/11 22:08
13F:→ danny8376:為啥會嘗試去unset一個類別裡的static var啦 09/11 22:10
14F:→ danny8376:再說要是真的被unset掉了 也沒東西可以跑prepare了啦 09/11 22:11
15F:→ 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)
16F:→ danny8376:恩... 這位大大啊... 那個語言的constructor不能 09/12 14:04
17F:→ danny8376:下參數啊... 難不成還設計成內部專用? 09/12 14:04
18F:→ danny8376:(總不至於OO了還不能給參數new自己要的東西吧?) 09/12 14:05
19F:→ danny8376:都物件化了 就都給GC自己去處理就好 09/12 14:09
20F:→ danny8376:然後每個statement都是獨立的 不過要多次的execute 09/12 14:10
21F:→ danny8376:要看DB了 不過連續execute有問題也就加行closeCursor() 09/12 14:11
22F:→ danny8376:說真的 有點不知剛剛在回啥XD 09/12 14:12
我了解~ 謝謝danny 大
※ 編輯: pttnews 來自: 210.63.96.2 (09/13 09:37)