當我運行SQL腳本,並用數字代替它,它返回空或空什麼是「=!」在下面的PHP代碼中是什麼意思?
$order_f = $dbs->query_field("SELECT order_id FROM orders WHERE order_center_id = !", $record['cust_id']);
什麼的=!代表?這不一樣嗎?
當我運行SQL腳本,並用數字代替它,它返回空或空什麼是「=!」在下面的PHP代碼中是什麼意思?
$order_f = $dbs->query_field("SELECT order_id FROM orders WHERE order_center_id = !", $record['cust_id']);
什麼的=!代表?這不一樣嗎?
它根本不是運營商!
在你的情況下,你的數據庫對象(我認爲是基於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)
。
或'!'可能只是'query_field'函數的佔位符,就像'?'是PDO。只是一個隨機的想法,因爲在該字符串中沒有比較的價值。 –
@Jack它會給你一個錯誤,如果你省略=和!之間的空格 – SkyLover
@FabrícioMatté有佔位符有'!'?我沒有聽說過這樣的事情。 –
問:什麼= =!代表?這不一樣嗎?
編號A不等於比較會foo != bar
或foo <> bar
我認爲你需要看看query_field
功能要弄清楚什麼是在做什麼。它看起來像查詢打算做一個等於比較,並且該感嘆號是一個佔位符。 (我不熟悉query_field
函數;它看起來不像我曾經見過的mysql_,mysqli_或PDO函數,至少不是。)
什麼是$dbs
?那是什麼東西?我敢打賭,這是該方法的定義。
我懷疑有人在mysql接口的頂部添加了一個圖層來僞支持參數化查詢。可能的是,該函數的第二個參數在包含在SQL文本中之前,會通過mysql_real_escape_string運行,替換爆炸(!)。這似乎是最可能的解釋。
!通常代表NOT。換句話說,如果這個值是真的,它就會變成錯誤的,而相反的。 – kennypu
@SalmanA這就是我發表評論的原因。所以在SQL中,是!=和=!一樣的東西?實際上這似乎並非如此,因爲在=和!之間有一個空格。 – kennypu
我看到謝謝薩爾曼 – SkyLover