0

次のような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とWHEREIN句を使用するクエリの例を見つけることができなかったので、助けていただければ幸いです。

OpenEdge10.2Aodbcドライバーを使用してProgressデータベースに接続しています。

4

3 に答える 3

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);

他の誰かがこれが役立つことを願っています

于 2014-02-13T21:42:47.970 に答える
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()に関する詳細情報もあります

于 2012-10-04T19:02:47.827 に答える
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

于 2012-10-04T19:11:15.173 に答える