0

我已经为此工作了一个多月,并且在此代码中看不到任何错误。直到大约两个月前它工作得很好。我开始收到此错误:警告:mysql_num_rows():提供的参数不是第 41 行的 functions.php 中的有效 MySQL 结果资源(第 41 行是 $num=mysql_num_rows($result);)。我确保它正在与数据库连接,并检查了整个文件中的括号。当我使用 mysql_error 检查错误时,我挂断了第 40 行的Query is empty,如下所示。我花了很多时间试图通过阅读 stackoverflow 上的帖子来解决这个问题,但需要更多帮助。谢谢。

function query_sql($sql)
{
$username="somename";
$password="mypassword";
$database="database2";
$link=mysql_connect("sqlserver.myserver.net",$username,$password);
@mysql_select_db($database,$link);
$result = mysql_query ($sql)or die(mysql_error());
$num=mysql_num_rows($result);
mysql_close();
return $result;
}

这是包含 $sql 变量的主页中的代码。

<?php
include 'modules/functions.php';
update_log($_SERVER['PHP_SELF'], "");
if(isset($_SERVER['PHP_AUTH_USER']))
{
    $User = $_SERVER['PHP_AUTH_USER'];
    $sql = "select Username from users where Username = '".$_SERVER['PHP_AUTH_USER']."'";
    $get_results = query_sql($sql) or die('Query failed: ' . mysql_error() . "<br />\n$sql"); 
    $row = mysql_fetch_assoc($get_results);
}
else
{
    header('Location: ../index.php');
}

$sql = 'select Name, Category, Category2, Private, Staff from users where Username = "'.$User.'"';
$get_user_access = query_sql($sql);
$sql = '';
4

1 回答 1

1

首先注释掉或删除函数定义mysql_close();中的。query_sql()

这是这背后的原因

在您调用mysql_close()然后调用mysql_fetch_assoc($get_results);PHP 将尝试使用默认设置重新连接到数据库 - 但没有活动的 SQL 查询来获取行数/获取错误输出的数据。

这是我的建议 - 不要反复打开和关闭数据库连接,在顶部打开它 - 运行所有查询并在底部关闭它,或者让它在脚本末尾使用 PHP 垃圾收集器关闭。

于 2013-03-16T08:23:42.967 回答