Php 将运算符作为参数传递给odbc_execute()
我正在做准备好的陈述的第一步尝试性的工作(然后脸朝下) 在此之前,我从$\u GET构建了以下代码,并对其进行了回显——代码运行良好,它从我的简单测试数据库中返回了我所期望的结果Php 将运算符作为参数传递给odbc_execute(),php,odbc,Php,Odbc,我正在做准备好的陈述的第一步尝试性的工作(然后脸朝下) 在此之前,我从$\u GET构建了以下代码,并对其进行了回显——代码运行良好,它从我的简单测试数据库中返回了我所期望的结果 SELECT * FROM edit_box WHERE (tag="9") AND (text="mango") ORDER BY time_stamp DESC 当我试图用一个准备好的语句来编码它时,即使我不使用$\u GET,而只是硬编码前面的值,我的代码看起来是这样的
SELECT * FROM edit_box WHERE (tag="9") AND (text="mango") ORDER BY time_stamp DESC
当我试图用一个准备好的语句来编码它时,即使我不使用$\u 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
这显然是一个初学者的错误,但我盯着它看,还是不说“哦!”
我做错了什么?你不能这样做--
和(文本?“”)
像这样的参数通常只能为实际值传递-在某些情况下,标识符
要执行所需操作,需要将“=”内联插入SQL语句中
有点像这样--
+1和答案。谢谢请相信我,在我第一次进入准备好的语句时会遇到异常:-)碰巧,+(或)是一个列表框的值,允许用户选择Comparison,no不受用户操纵。如果HTML显示input type=“text”,那么我只需要用户输入的参数,这样安全吗
$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'));