2016-03-28 73 views
-1

遇到錯誤「空的(子)表達」我有一列phone其包含這樣一個值:正則表達式:從正則表達式

["1740235959","9106597107","9369326058","9168187280","9393503006","9169124377","9378152001","9168176167","9385156441","9166118105","9166110676"] 

其電話找到。

這個發送和接收結果客戶端:

if ($tag=='getFriends'){ 
    $tempArray = array(); 
    foreach ($_POST["phoneNumbers"] as $phoneNumber) { 
     $friends = $db->getFriends($phoneNumber); 
     array_push($tempArray,($friends)); 
    } 
    echo json_encode($tempArray); 
} 

,這裏是我的getFriends()方法:

public function getFriends($phoneNumber){ 
    $newNumber = substr($phoneNumber, -10); 
    $result = mysql_query("SELECT * FROM users WHERE phone REGEXP '$newNumber' LIMIT 1") or die(mysql_error()); 
    $rows = mysql_num_rows($result); 
    if ($rows>0) { 
    $result = mysql_fetch_array($result); 
    $response["error"] = FALSE; 
    $response["getFriends"]["real_name"] = $result["real_name"]; 
    $response["getFriends"]["name"] = $result["name"]; 
    $response["getFriends"]["email"] = $result["email"]; 
    $response["getFriends"]["is_online"] = $result["is_online"]; 
    $response["getFriends"]["in_game"] = $result["in_game"]; 
    $response["getFriends"]["status"] = $result["status"]; 
    $response["getFriends"]["user_unique_id"] = $result["user_unique_id"]; 
    }else { 
     $response["error"] = TRUE; 
    } 
    return $response; 

} 

和錯誤消息我得到:

Got error 'empty (sub)expression' from regexp 

什麼時我做錯了?

+0

你想用'$ newNumber = substr($ phoneNumber,-10)來實現什麼?''? – mitkosoft

+0

您的問題似乎與'MySql'中正則表達式的工作方式有關。看看[這裏](http://stackoverflow.com/questions/31336295/mysql-regex-got-error-empty-subexpression-from-regexp),似乎OP面臨着同樣的問題,並提出解決方案修復它。 – Veverke

+0

我會首先考慮重構/規範化數據庫。爲什麼你想對這樣的序列化結構化數據字符串進行正則表達式搜索,而不是將數據實際放入可以有效查詢的表中?這尤其顯得至關重要,因爲如果你想通過這個手機領域建立朋友關係(即搜索朋友等),那麼當前的數據庫模式將會非常低效,特別是在添加更多的朋友關係時。您目前的查詢根本無法使用索引。 –

回答

1

如果我明白你想要做什麼,你甚至不使用正則表達式。只需檢查WHERE phone = '$newNumber'或者,如果您想要更具包容性,請改爲WHERE phone LIKE '%$newNumber%'

此外,您一定知道mysql_* functions在當前版本的PHP中不可用,已棄用6年,並且將您暴露給critical security vulnerabilities。給我30秒在您的網站上,我會有你的整個用戶錶轉儲。

+0

你是最好的 – shirin

+0

我很高興我能超過7000分你 – shirin

+0

我問你在我的項目中幫助我? 請給我發電子郵件**[email protected]** – shirin