如何使用PSQL(普及)或PHP中的变量?

如何使用PSQL(普及)或PHP中的变量?,php,pervasive-sql,Php,Pervasive Sql,这是我查询的一部分: where workcenter = '$query' or EmployeeName like '$query' workcenter是一个数字,EmployeeName是一个字符串。用户输入一个数字或名称,这将在表中搜索工作中心或员工 在我的PSQL编辑器中,此查询在硬编码时有效: where workcenter = 'Adrian' or EmployeeName like '%Adrian%' 我应该如何编写像“$query”这样的员工名称,以便它返回结果

这是我查询的一部分:

where workcenter = '$query' or EmployeeName like '$query'
workcenter
是一个数字,
EmployeeName
是一个字符串。用户输入一个数字或名称,这将在表中搜索工作中心或员工

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

where workcenter = 'Adrian' or EmployeeName like '%Adrian%' 
我应该如何编写像“$query”这样的
员工名称
,以便它返回结果

我试过:
%'$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中bool上的成员函数execute():21堆栈跟踪:#0{main}在C:\inetpub\wwwroot\viewWorkcenter.php的第21行抛出

第20行和第21行:

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

我的理解是,此错误意味着查询未返回任何结果。

您需要将通配符(
%
)与
$query
值连接起来。您还需要转义单引号。我使用的是PSQL解调数据,因此我的字段名与您的字段名不同,但它应该能够理解这一点。 您将使用以下内容:

$basesql = 'select * from class ';
$OrClause = 'GER';
$sql = $basesql . ' where id > 10  or name like \'%' . $OrClause . '%\'';
echo ($sql . '<br>');
编辑:在我发布我的答案后,问题中发布的代码有点不同。问题是,当双引号和单引号混合使用时,可能会导致混淆。
固定代码为:

$psql = $base . "where workcenter = '$query' or EmployeeName like '%" .$query . "%'";
并生成:

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

由于字符串使用双引号,因此不需要对值周围的单引号进行转义。

发布相关代码片段,否则很难说您在那里真正做了什么。我将查询发布到了错误所在的位置。你还需要看什么?请分享可读的代码,不包含语法错误。我用反映你的例子的代码更新了我的问题。我仍然有同样的错误。当我打印sql语句时,看起来引号没有被转义。谢谢你,在你的帮助下,我能够使它正常工作。我感谢你抽出时间来处理我的问题。你应该得到奖章或拥抱
Query: select Employee,EmployeeName,WorkcenterName from zzHENEmplWkcntr where workcenter = 'fff' or EmployeeName like '%VALUE%'