[英]Search all database with varchar and INT fields with wildcard mysql query
嘗試獲取通配符搜索以選擇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' ";
不知道為什么要這樣做,但聽起來像是手動查詢串聯的候選者(提示:不要這樣做,很痛)。 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';
}
不是確切的代碼,但是您應該知道。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.