2016-03-28 10:30
浏览 1.1k


I have a column phone which contains a value like this:


which are phone found.

sent and receive result to client by this:

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

And Here is my getFriends() method:

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;


And the error message I get:

Got error 'empty (sub)expression' from regexp

What am I doing wrong?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • douhuireng4407 2016-03-28 21:28

    If I understand what you're trying to do, you aren't even using a regular expression. Just check WHERE phone = '$newNumber' or, if you want to be more inclusive, WHERE phone LIKE '%$newNumber%' instead.

    Also, you must surely know that mysql_* functions are not available in the current version of PHP, have been deprecated for 6 years, and expose you to critical security vulnerabilities. Give me 30 seconds on your website and I'll have a dump of your entire users table.

    点赞 打赏 评论

相关推荐 更多相似问题