2010-03-22 53 views
1

這聽起來像一個非常簡單的問題,但我是PHP新手。如果我有這樣的說法:什麼時候MySQL查詢實際在PHP中執行?

$r =& $db->query("insert into table (col1, col2) values (10, 20)"); 

我是否還必須執行它,或者當我引用它時會執行它嗎?我有另一種情況,我有一個選擇查詢,這似乎邏輯上只在我調用fetchrow時運行,但我從中複製的代碼不會調用execute或fetch。我本來期待它,所以我不能說是否僅僅是我沒有得到它,或者遺漏的執行語句是否是問題。它也不插入記錄,但它不會拋出我能找到的錯誤。

另外,我有點困惑=&表示法。我在谷歌上查了一下,發現了一些它,但我仍然不清楚。

謝謝。

+1

假設你正在使用PDO的'query'方法應該執行,但它更正確使用' exec'當你不選擇。檢查錯誤? – Matchu

回答

1

,當你調用query()

=&符號是過時它會被執行...它用來做函數返回到資源對象的引用。但是,當前版本的PHP(> 5.0,我認爲)總是通過引用傳遞(並返回)對象,所以它不會再真正改變任何東西。

+1

此外,返回對象並使用&運算符已被棄用,並在5.3中引發了大量的警告(E_STRICT)。 – ryeguy

1

查詢在您調用query函數時執行。當你談論需要修正的代碼時,什麼是壞的,「需要修復」的代碼是什麼樣的?

+0

我甚至不應該添加任何關於「修復」的文字。這是無關的,我會編輯它。 – MJB

1

&在幾種情況下使用,它表示通過參考。你應該從這裏開始閱讀:

在您的代碼段是最有可能的不必要的(雖然你給什麼$db是一點端倪),因爲結果集是可能的對象和對象不再需要通過引用來分配,因爲這是默認行爲。如果您正在學習PHP,請注意過時的教程。

+0

謝謝。我很欣賞這些手冊的指針。我一直在使用Google,並沒有找到任何可以找到我想要的地方的網站。無論如何,我總是回到es.php.net。 – MJB

+1

「指向手冊」Pun提醒! – keithjgrant

+0

是的,我來自C和Perl,所以我認爲它是apropos。感謝您的注意。 – MJB

0

$ db-> query是一個類包含的方法,它在php上下文中不起作用。您的這個示例可能來自使用ADODB或任何其他類型的數據庫抽象層的較大應用程序。如果是這種情況,那麼你可以參考特定於該數據庫抽象層的文檔,因爲查詢可能包含在一個事務中,例如,一旦你調用query(),它就不會被執行。

要確保查詢被立即執行嘗試用一個簡單的MySQL的功能測試:

mysql_query("SHOW TABLES");