无法在PHP函数中执行MYSQL查询

Sus*_*usa 5 php mysql

PHP:

function generate_uid() {  
  $uid = mt_rand();  

  $sql = "SELECT user_id  
            FROM user_registration";  

  if (!mysql_query($sql,$con)) {  
    die('Error: ' . mysql_error());  
  }  

  $result = mysql_query($sql);  
  $availability = TRUE;  

  while($row = mysql_fetch_array($result)) {  
    if($row['user_id'] == $uid) {  
      $availability = FALSE; 
    }  
  }

  if($availability == FALSE) {
    generate_uid();
  }  
}  
Run Code Online (Sandbox Code Playgroud)

错误

警告:mysql_query():提供的参数不是E:\ Web Design EC\register2.php第8行的有效MySQL-Link资源错误:

但是当我像普通的php一样执行这个函数时,没有错误,并且生成了$ uid.可能是什么问题?

Tat*_*nen 10

$con未在当前变量范围中定义.您可以将连接作为参数传递给函数:

function generate_uid($con) {
    ...
    mysql_query($sql, $con);
}

$uid = generate_uid($con);
Run Code Online (Sandbox Code Playgroud)

或者您可以使用global:

function generate_uid() {
    global $con;
    ...
    mysql_query($sql, $con);
}

$uid = generate_uid();
Run Code Online (Sandbox Code Playgroud)

或者,只需将连接变量保留,并使用最后打开的连接:

function generate_uid() {
    ...
    mysql_query($sql); 
}

$uid = generate_uid();
Run Code Online (Sandbox Code Playgroud)

所有这些都应该奏效.

要了解有关变量范围的更多信息,请查看有关该主题的PHP手册:

http://www.php.net/manual/en/language.variables.scope.php