2013-08-23 130 views
2

當我運行SQL腳本,並用數字代替它,它返回空或空什麼是「=!」在下面的PHP代碼中是什麼意思?

$order_f = $dbs->query_field("SELECT order_id FROM orders WHERE order_center_id = !", $record['cust_id']); 

什麼的=!代表?這不一樣嗎?

+1

!通常代表NOT。換句話說,如果這個值是真的,它就會變成錯誤的,而相反的。 – kennypu

+0

@SalmanA這就是我發表評論的原因。所以在SQL中,是!=和=!一樣的東西?實際上這似乎並非如此,因爲在=和!之間有一個空格。 – kennypu

+0

我看到謝謝薩爾曼 – SkyLover

回答

7

它根本不是運營商!

在你的情況下,你的數據庫對象(我認爲是基於MDB2)提供的query_field()方法似乎提供了某種準備好的語句,其中感嘆號用於佔位符。我想象下面的查詢是基於你的代碼執行:

SELECT order_id FROM orders WHERE order_center_id = 123 

123$record['cust_id']值。

老答案

在你的情況!=(或<>可以一樣=!(或= NOT(...)),因爲「不等於」可以被認爲是同爲「等於逆「,但僅適用於布爾值邏輯。比較字符串時不起作用。

此外,還有在operator precedence差異:

a = !b & c 

這被評價爲a = NOT(b) & c

a != b & c 

而這被評估爲a = NOT(b & c)

+0

或'!'可能只是'query_field'函數的佔位符,就像'?'是PDO。只是一個隨機的想法,因爲在該字符串中沒有比較的價值。 –

+0

@Jack它會給你一個錯誤,如果你省略=和!之間的空格 – SkyLover

+0

@FabrícioMatté有佔位​​符有'!'?我沒有聽說過這樣的事情。 –

7

問:什麼= =!代表?這不一樣嗎?

編號A不等於比較會foo != barfoo <> bar

我認爲你需要看看query_field功能要弄清楚什麼是在做什麼。它看起來像查詢打算做一個等於比較,並且該感嘆號是一個佔位符。 (我不熟悉query_field函數;它看起來不像我曾經見過的mysql_,mysqli_或PDO函數,至少不是。)

什麼是$dbs?那是什麼東西?我敢打賭,這是該方法的定義。

我懷疑有人在mysql接口的頂部添加了一個圖層來僞支持參數化查詢。可能的是,該函數的第二個參數在包含在SQL文本中之前,會通過mysql_real_escape_string運行,替換爆炸(!)。這似乎是最可能的解釋。

+1

它應該是一個像你說的佔位符,其他方式需要將'cust_id'傳遞給該方法。 – Red

+0

的$ DBS是一類 – SkyLover

+1

我看到我需要看query_field感謝@ spencer7593 – SkyLover