[英]What does “= !” in the following PHP code mean?
当我运行sql脚本并用数字替换它时,它返回空或null
$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(...)
),因为“不等于”可能被认为与“等于倒数”相同,但仅适用于布尔值逻辑。 比较字符串时它不起作用。
此外, 运营商优先级有所不同:
a = !b & c
这被评估为a = NOT(b) & c
。
a != b & c
而这被评估为a = NOT(b & c)
。
问:什么=! 代表? 这不相等吗?
不,A等于比较器就是foo != bar
或foo <> bar
我认为你需要查看query_field
函数来弄清楚它在做什么。 看起来该查询旨在进行等于比较,并且该感叹号是占位符。 (我不熟悉query_field
函数;它看起来不像mysql_,mysqli_或PDO函数,至少,我见过。)
什么是$dbs
? 这是什么样的对象? 我敢打赌,这就是定义这种方法的地方。
我怀疑有人在mysql接口之上添加了一个伪支持参数化查询的层。 可能,函数的第二个参数通过mysql_real_escape_string运行,在它包含在SQL文本中之前,替换了bang(!)。 这似乎是最可能的解释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.