我正在将我的第一个尝试性步骤纳入准备好的陈述中(并且在我的脸上掉下来)。
以前,我从$ _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错误,但我盯着它仍然不说'哦!
我做错了什么?
提前致谢。
答案 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'));