了解PHP中的Postgres Like命令中的参数

Léo*_* 준영 3 php postgresql

如何在Postgres Like命令中使用参数?

我正在读这份文件.我试图lorem在表格questions和列中搜索一个单词body.

我在PHP中运行以下代码失败了

$result = pg_query_params ( $dbconn, 
    "SELECT question_id, body
    FROM questions
    WHERE body ilike '%$1%'",
    array ( $_GET['search'])                                                                                                                                                       
);
Run Code Online (Sandbox Code Playgroud)

我收到了这个警告

警告:pg_query_params()[function.pg-query-params]:查询失败:错误:绑定消息提供1个参数,但准备好的语句""在第10行的/var/www/codes/search_body.php中需要0调用堆栈

Bil*_*win 8

您必须使用参数代替一个数值,而不是在引号内.

解决方案1:将LIKE通配符连接到参数值:

$result = pg_query_params ( $dbconn, 
    "SELECT question_id, body
    FROM questions
    WHERE body ilike $1",
    array ( "%" . $_GET['search'] . "%")
);
Run Code Online (Sandbox Code Playgroud)

解决方案2:LIKE在SQL表达式中连接通配符:

$result = pg_query_params ( $dbconn, 
    "SELECT question_id, body
    FROM questions
    WHERE body ilike '%' || $1 || '%'",
    array ( $_GET['search'] )
);
Run Code Online (Sandbox Code Playgroud)