F3 フレームワークに問題があります。
ユーザーが入力したテキストを検索しようとしています。
ここにいくつかの声明があります:
$db->exec(array("Select userid,username,section from user
WHERE section=:sectionId
AND username ILIKE '%?%'"),
array(':sectionId' => $sectionId),
array( 1=> $queryString),
NULL));
タイプミスがあれば申し訳ありませんが、生産システムからコードを投稿することは許可されていません。
このステートメントは、空の配列を返します。
変数を文字列に置き換えて psql でテストしましたが、1 つの一致が返されます。
誰かアイデア?
編集:
Sn0opy からの回答:
$db->exec(array("Select userid,username,section from user
WHERE section=:sectionId
AND username ILIKE '%?%'"),
array(':sectionId' => $sectionId, 1 => $queryString));
問題は、Postgresql では $1、$2、$3 であり、'?' ではないことです。.
私の解決策(返信してくれたSn0opyに再び感謝します):
文字列を連結する必要があります
('%'|| :queryString || '%')
これは今動作します:
$db->exec(array("Select userid,username,section from user
WHERE section=:sectionId
AND username ILIKE ('%'|| :queryString || '%') ),
array(':sectionId' => $sectionId, ':queryString' => $queryString));
文字列を連結しないと、次のエラーが発生します。
ERROR: could not determine data type of parameter $1