如何在 PHP 中使用 PSQL(普遍)或变量?

How to use PSQL (pervasive) OR in PHP with a variable?

这是我查询的一部分:

where workcenter = '$query' or EmployeeName like '$query'

workcenter 是一个数字,EmployeeName 是一个字符串。用户输入数字或姓名,这会在 table 中搜索工作中心 # 或员工。

在我的 PSQL 编辑器中,此查询在硬编码时有效:

where workcenter = 'Adrian' or EmployeeName like '%Adrian%' 

我应该如何编写 EmployeeName like '$query' 才能得到 returns 结果?

我试过:
%'$query'%
'%$query%'
'%{$query}%'

编辑:在遵循@mirtheli 的建议后我尝试了

$base = 'select Employee,EmployeeName,WorkcenterName from zzHENEmplWkcntr ';
$query = $_GET['wc'];comes from input text (example: 1234 or adrian)
$psql = $base . "where workcenter = '$query' or EmployeeName like \'%' .$query . '%\'";
echo "Query: ".$psql;
Output: select Employee,EmployeeName,WorkcenterName from zzHENEmplWkcntr where workcenter = 'adrian' or EmployeeName like \'%' . adrian . '%\'

我得到的错误:致命错误:未捕获错误:调用 C:\inetpub\wwwroot\viewWorkcenter.php:21 中 bool 上的成员函数 execute():21 堆栈跟踪:#0 {main} 抛出在 C:\inetpub\wwwroot\viewWorkcenter.php 第 21 行

第 20 行和第 21 行:

$qry = $conn->prepare($psql);
$qry->execute();

我的理解是这个错误意味着查询没有返回结果。

您需要将通配符 (%) 与 $query 值连接起来。您还需要转义单引号。我使用的是 PSQL DEMODATA,因此我的字段名称与您的不同,但它应该能说明问题。 您将使用类似的东西:

$basesql = 'select * from class ';
$OrClause = 'GER';
$sql = $basesql . ' where id > 10  or name like \'%' . $OrClause . '%\'';
echo ($sql . '<br>');

其中显示:

select * from class where id > 10 or name like '%GER%'

编辑:我发布答案后问题中发布的代码略有不同。问题是当双引号和单引号混合使用时,会造成混淆。
固定码为:

$psql = $base . "where workcenter = '$query' or EmployeeName like '%" .$query . "%'";

并生成:

Query: select Employee,EmployeeName,WorkcenterName from zzHENEmplWkcntr where workcenter = 'fff' or EmployeeName like '%VALUE%'

由于字符串使用了双引号,所以值周围的单引号不需要转义。