将运算符作为参数传递给odbc_execute()

时间:2011-09-26 06:40:07

标签: php odbc

我正在将我的第一个尝试性步骤纳入准备好的陈述中(并且在我的脸上掉下来)。

以前,我从$ _GET构建了以下内容并回复它 - 代码工作正常,它返回了我对我的简单测试数据库的期望。

SELECT * FROM edit_box WHERE (tag="9") AND (text="mango") ORDER BY time_stamp DESC

当我尝试使用aprepared语句对其进行编码时,即使我不使用$ _GET而只是硬编码前面的值,我的代码看起来像这样

$odbc_query = OdbcPrepare('SELECT * FROM edit_box WHERE (tag="?")' .
                          ' AND (text ? "?") ORDER BY time_stamp DESC');

$odbcResult = odbc_exec($odbc_query, array('9',  '=', 'mango'));  
var_dump($odbcResult);

我得到NULL

显然是一个线索n00b错误,但我盯着它仍然不说'哦!

我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

你不能这样做 -

AND(文字?“?”)

像这样的参数通常只能传递给实际值 - 在某些情况下标识符......

要执行您想要的操作,您需要将'='内联插入到SQL语句中...

有点像这样 -

$logical_operator = '=';

$sql = SELECT * FROM edit_box WHERE (tag=\"?\") AND (text $logical_operator \"?\") ORDER BY time_stamp DESC');

$odbc_query = OdbcPrepare($sql);

$odbcResult = odbc_exec($odbc_query, array('9', 'mango'));