【问题标题】:Use pg_query_params array placeholders for searching multiple columns使用 pg_query_params 数组占位符搜索多列
【发布时间】:2015-05-08 06:58:00
【问题描述】:

我将两个不同的值传递到文件中,一个是用户输入的,另一个是从下拉菜单中的一组预定义值中选择的,这是我遇到问题的那个。

当使用单个占位符进行查询时,它可以工作,例如:

$result = pg_query_params($con, "SELECT * FROM chemsub WHERE name like $1", array("%".$_REQUEST['term']."%"));

我想更改查询,以便用户可以更改他们正在搜索的列我似乎无法让它工作,这就是我所拥有的

$result = pg_query_params($con, "SELECT * FROM chemsub WHERE $1 like $2", array($_REQUEST['dropdown'],"%".$_REQUEST['term']."%"));

我知道正确的值被传递到文件中,正确的拼写匹配数据库中的列名,但由于某种原因它没有返回任何行。

任何帮助将不胜感激。

【问题讨论】:

    标签: php sql postgresql placeholder


    【解决方案1】:

    你不能用参数代替标识符。如果您想再次查询动态列,您可以在 php 中准备查询文本或让 sql 看起来像 ($1 = 'foo' AND foo LIKE $2) OR ($1 = 'bar' ANd bar LIKE $2。`

    【讨论】:

    • 感谢您的回答,虽然我已经尝试过您的建议,但无论哪种方式都无法正常工作,还有其他建议吗?
    • @syn_p “无法正常工作”是什么意思?在我看到查询及其返回的错误之前,我什么也说不出来。
    • 查询没有返回错误,只是没有按预期工作。它不是返回行数(这将扩展到返回实际结果,但一次一步),它正在完成查询并返回'Rows:0'。我已经通过将查询与 pg_query_params 分离并在调用 query_params 之前对其进行回显来检查查询正在打印的内容,并且内容是正确的(列出正确的列名(由下拉列表和输入的值指定)。
    • @syn_p 所以看来你没有适合它的数据。
    猜你喜欢
    • 1970-01-01
    • 2011-07-29
    • 2017-09-13
    • 2021-02-13
    • 2018-12-17
    • 2012-04-21
    • 1970-01-01
    • 2019-07-25
    • 2017-01-22
    相关资源
    最近更新 更多