Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在PHP函数内执行MYSQL查询_Php_Mysql - Fatal编程技术网

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

无法在PHP函数内执行MYSQL查询,php,mysql,Php,Mysql,PHP: 错误 警告:mysql_query():提供的参数不是第8行E:\Web Design EC\register2.php中的有效mysql链接资源 错误: 但是当我像普通php一样执行这个函数时,没有错误,并且生成了$uid。可能是什么问题?$con未在当前变量范围中定义。您可以将连接作为参数传递给函数: function generate_uid() { $uid = mt_rand(); $sql = "SELECT user_id F

PHP:

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


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

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

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();
  }  
}  
或者您可以使用
全局

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

$uid = generate_uid($con);
或者,只需省略连接变量,即可使用最后打开的连接:

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

$uid = generate_uid();
所有这些都应该有效

要了解有关变量作用域的更多信息,请查看PHP手册,网址为:


您正在函数中使用$con,但未在函数范围中定义$con

你要么

a) 将$con传递给您的函数或

b) 将$con设置为全局

c) 根本不用$con

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

$uid = generate_uid();

但是,请确保您的应用程序仅连接到一个数据库,否则您将遇到问题,因为当您不指定连接时,它将使用上次打开的连接。

在您的函数中,您的MySQL连接不存在。您需要传入它,或者使用
global
关键字:

    if (!mysql_query($sql))
如果计划将$row用作关联数组,则不能使用该数组。使用:

while($row = mysql_fetch_array($result))
相反

编辑


默认情况下,MYSQL\u都是打开的,忘了这一点。其他用户指出了这个问题,因为连接在函数作用域中不可用。

mysql\u fetch\u array
默认情况下以数字数组和关联数组的形式获取结果行。忘记了默认情况下已打开,抱歉
while($row = mysql_fetch_array($result))
while($row = mysql_fetch_assoc($result))