0

尝试进行通配符搜索以获取 org_name 字段中的任何文本,并获取其中包含 1 的任何 INT 字段输入到表单中,

例如,如果有人在表单中键入 Childminder,我希望所有带有 childminder INT 字段且其中包含 1 的记录都显示在结果中......

$sql_result= "SELECT * FROM table WHERE org_name LIKE '%" . $org_name . "%' 

OR carer LIKE '1'
OR childminder LIKE '1' ";
4

1 回答 1

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';
    }

不是确切的代码,但你应该明白。

于 2012-06-14T22:39:00.937 回答