尝试使用通配符搜索来拾取org_name字段中的任何文本,并拾取输入到表单中的任何包含1的整型字段,
例如,如果有人在表单中输入了儿童保姆,我希望所有包含儿童保姆INT字段和1的记录都会显示在结果中……
$sql_result= "SELECT * FROM table WHERE org_name LIKE '%" . $org_name . "%'
OR carer LIKE '1'
OR childminder LIKE '1' ";发布于 2012-06-15 06:39:01
不知道为什么要做这样的事情,但听起来像是手动查询连接的候选者(提示:不要这样做,这很痛苦)。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';
}这不是确切的代码,但您应该明白其中的含义。
https://stackoverflow.com/questions/11042280
复制相似问题