遇到錯誤「空的(子)表達」我有一列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
什麼時我做錯了?
你想用'$ newNumber = substr($ phoneNumber,-10)來實現什麼?''? – mitkosoft
您的問題似乎與'MySql'中正則表達式的工作方式有關。看看[這裏](http://stackoverflow.com/questions/31336295/mysql-regex-got-error-empty-subexpression-from-regexp),似乎OP面臨着同樣的問題,並提出解決方案修復它。 – Veverke
我會首先考慮重構/規範化數據庫。爲什麼你想對這樣的序列化結構化數據字符串進行正則表達式搜索,而不是將數據實際放入可以有效查詢的表中?這尤其顯得至關重要,因爲如果你想通過這個手機領域建立朋友關係(即搜索朋友等),那麼當前的數據庫模式將會非常低效,特別是在添加更多的朋友關係時。您目前的查詢根本無法使用索引。 –