簡體   English   中英

使用通配符mysql查詢搜索具有varchar和INT字段的所有數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM