RegEx:出现错误';空(子)表达式';来自regexp


RegEx: Got error 'empty (sub)expression' from regexp

我有一个列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

我做错了什么?

如果我理解你想做什么,那么你甚至没有使用正则表达式。只需检查WHERE phone = '$newNumber',或者,如果您想更具包容性,请检查WHERE phone LIKE '%$newNumber%'

此外,您肯定知道mysql_*函数在当前版本的PHP中不可用,已经弃用了6年,并使您暴露在关键的安全漏洞中。在你的网站上给我30秒,我会把你的整个用户表都转储掉。