使用带有通配符mysql查询的varchar和INT字段搜索所有数据库

时间:2012-06-14 22:35:12

标签: php mysql

尝试获取通配符搜索以获取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' ";

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

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