尝试获取通配符搜索以获取org_name字段中的任何文本,并同时选取其中包含1的任何INT字段,并将其输入到表单中,
e,g如果有人在表单中输入了Childminder,我希望所有带有childminder INT字段的记录都显示在结果中...
$sql_result= "SELECT * FROM table WHERE org_name LIKE '%" . $org_name . "%'
OR carer LIKE '1'
OR childminder LIKE '1' ";
答案 0 :(得分:0)
不确定为什么要这样做,但听起来像是手动查询连接的候选者(提示:不要这样做,它会伤害)。 PDO不支持绑定列名,因此如果您尝试从库/其他已建立的解决方案中获得任何帮助,那么运气不佳。
<强>更新强>
如果您的架构没有改变并且您关注SQLi,那么您可以使用一些匹配机制来获取搜索查询和可用(“匹配”)列的列并处理它们,并报告匹配的列。然后你只需要从安全数据中查询。示例代码:
$columns = array(/* ... */);
$query = '/* ... */';
$matches = array();
foreach($columns as $column)
{
if(preg_match('/'.$column.'/', $query))
{
$matches[] = $column;
}
}
$sqlQuery = 'you select';
foreach($matches as $match)
{
$sqlQuery .= ' OR '.$match.' = 1';
}
不是确切的代码,但你应该明白这一点。