当我运行 sql 脚本并将其替换为数字时,它返回空或 null
$order_f = $dbs->query_field("SELECT order_id FROM orders WHERE order_center_id = !", $record['cust_id']);
= 是什么意思?代表?这不是平等的吗?
根本就不是运营商!
query_field()
在您的情况下,您的数据库对象(我认为它基于MDB2 )提供的方法似乎提供了某种准备好的语句,其中感叹号用于占位符。我想象以下查询是根据您的代码执行的:
SELECT order_id FROM orders WHERE order_center_id = 123
123
的值在哪里$record['cust_id']
。
旧答案
在您的情况下!=
(or <>
)可能=!
与(or )相同= NOT(...)
,因为“不等于”可能被认为与“等于倒数”相同,但仅适用于布尔值逻辑。比较字符串时它不起作用。
此外,运算符优先级也有所不同:
a = !b & c
这被评估为a = NOT(b) & c
。
a != b & c
而这被评估为a = NOT(b & c)
。
问: = 是什么意思?代表?这不是平等的吗?
不。不等于比较器将是foo != bar
或foo <> bar
我认为您需要查看该query_field
功能以弄清楚它在做什么。看起来该查询旨在进行等于比较,而该感叹号是一个占位符。(我不熟悉那个query_field
函数;它看起来不像 mysql_、mysqli_ 或 PDO 函数,至少,我见过。)
是什么$dbs
?那是一个什么样的物体?我敢打赌,这就是定义此方法的地方。
我怀疑有人在 mysql 接口之上添加了一个层来伪支持参数化查询。很可能,函数的第二个参数在包含在 SQL 文本中之前通过 mysql_real_escape_string 运行,替换了 bang (!)。这似乎是最可能的解释。