无法在PHP函数内执行MYSQL查询
PHP: 错误 警告:mysql_query():提供的参数不是第8行E:\Web Design EC\register2.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一样执行这个函数时,没有错误,并且生成了$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))