什么是“=!”在下面的PHP代码中意味着什么?

时间:2013-08-23 04:08:44

标签: php mysql

当我运行sql脚本并用数字替换它时,它返回空或null

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

是什么=!代表?这不相等吗?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:7)

问: = =!代表?这不相等吗?

没有。不等于比较器的是foo != barfoo <> bar

我认为你需要查看query_field函数来弄清楚它在做什么。看起来该查询旨在进行等于比较,并且该感叹号是占位符。 (我不熟悉那个query_field函数;它看起来不像mysql_,mysqli_或PDO函数,至少是我见过的。)

什么是$dbs?这是什么样的对象?我敢打赌,这就是定义这种方法的地方。

我怀疑有人在mysql接口之上添加了一个伪支持参数化查询的层。可能,函数的第二个参数通过mysql_real_escape_string运行,在它包含在SQL文本中之前,替换了bang(!)。这似乎是最可能的解释。