【问题标题】:Query in PHP with 'and' or 'or' as variable在 PHP 中使用 'and' 或 'or' 作为变量进行查询
【发布时间】:2015-12-30 07:18:45
【问题描述】:

我想搜索高级搜索。搜索功能具有和/或每个类别。用户可以选择和 n 或的任意组合。这里我给截图

我将和/或存储到变量调用 $pil、$pil1、$pil2 和 $pil3 中。并将它们放在查询中。这比逐个验证和/或的每个条件更好

这是我在 PHP 中使用 postgresql 的查询

$query = pg_query("SELECT   evaluationdate,onlinename,channel,topik,reviewername,sourceevaluation,evaluation 
from AgentPerformance 
where onlinename like '%".$VEOn1."%'
".$pil." reviewername like '%".$VERev1."%' 
".$pil1." channel like '%".$VEChan1."%' 
".$pil2."sourceevaluation like '%".$VESource1."%'
".$pil3."evaluationdate between '".$VEStart1."' and '".$VEEnd1."'");

编辑:

现在的问题,所有变量都不能为空,否则查询会出错。有什么办法可以骗到这个吗?

【问题讨论】:

  • 可能是您的$pil,否则任何变量都将为空。你检查过这个吗?
  • 我尝试回应他们。它不是空的
  • 尝试回显整个查询
  • 天啊。那就是问题所在。他们都必须被选中。不能为空。我会更新问题

标签: php postgresql search pg-query


【解决方案1】:

您错过了 sourceevaluationevaluationdate 附近的一些空格
试试这个查询:

$query = pg_query("SELECT   evaluationdate,onlinename,channel,topik,reviewername,sourceevaluation,evaluation 
from AgentPerformance 
where onlinename like '%".$VEOn1."%'
".$pil." reviewername like '%".$VERev1."%' 
".$pil1." channel like '%".$VEChan1."%' 
".$pil2." sourceevaluation like '%".$VESource1."%'
".$pil3." evaluationdate between '".$VEStart1."' and '".$VEEnd1."'");

【讨论】:

  • 你说得对。它有助于。但主要问题还没有解决
  • 我会验证它们。感谢您的帮助
【解决方案2】:

很简单。对每个 $pil 使用验证,无论它是否为空。它让我验证了 4 次,但它解决了问题。语法错误也解决了

【讨论】:

  • 你可以用这个来验证$pil1...$pilN变量:for($i=1 ; $i<4 ; $i++) { if (empty(${"pil" . $i})) { print "pil" . $i . " is empty "; } }
猜你喜欢
  • 2022-10-04
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-04
相关资源
最近更新 更多