我正在尝试使用odbc_prepare和odbc_execute语句编写查询,如下所示:
$query = 'SELECT * FROM TABLE WHERE names IN (?) AND age < ?';
$names = "Joe, John, Billy";
$age = 21;
$result = odbc_prepare($this->connection, $query);
odbc_execute($query, array($names, $age));
当然由于某些原因,这不起作用,我已经尝试了我的$ names变量格式的几个变体。任何帮助将不胜感激,因为我无法找到任何使用odbc_prepare和WHERE IN子句的查询示例。
我使用OpenEdge 10.2A odbc驱动程序连接到Progress数据库。
答案 0 :(得分:2)
只是为了让将来的每个人都知道我为这个特殊问题想出了什么:
$names = array("Joe","John","Billy");
$queryVars = array();
foreach($names AS $name){
$queryVars[] = $name;
}
$paramBind = implode(',', array_fill(0, count($names), '?'));
$query = 'SELECT * FROM TABLE WHERE names IN ('.$paramBind.')';
odbc_execute($query, $queryVars);
希望别人找到这个有用的
答案 1 :(得分:0)
您似乎试图以奇怪的方式使用array()。
尝试做类似的事情:
$names = array("Joe", "John", "Billy");
foreach($names as $name)
{
$query = 'SELECT * FROM TABLE WHERE names IN (?)'
$result = odbc_prepare($this->connection, $name);
odbc_execute($query, $name);
}
以下是有关odbc_prepare()
的更多信息答案 2 :(得分:0)
从手册中读到我认为它应该是这样的:
$query = 'SELECT * FROM TABLE WHERE names IN (?)'
$names = array("Joe", "John", "Billy");
$result = odbc_prepare($this->connection, $query);
odbc_execute($query, array(implode(',', $names));
这给出了一个包含1个元素的数组,因为有1个参数被请求。
该元素包含一个字符串'Joe, John, Billy'
,这是IN
子句的正确值。