我已经在这方面工作了一个多月了,并且在这段代码中看不到任何错误。它工作正常,直到大约两个月前。我开始收到此错误:警告:mysql_num_rows():提供的参数不是第41行的functions.php中的有效MySQL结果资源(第41行是$ num = mysql_num_rows($ result);)。我确保它与数据库连接并检查了整个文件的括号。当我使用mysql_error检查错误时,我会挂断第40行的查询为空,如下所示。我花了很多时间试图通过阅读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 = '';
答案 0 :(得分:1)
首先注释掉mysql_close();
函数定义中的query_sql()
。
这是
背后的原因调用mysql_close()
然后调用mysql_fetch_assoc($get_results);
PHP将尝试使用默认设置重新连接到数据库 - 但没有活动的SQL查询来获取行数/获取数据错误。
这是我的建议 - 不要反复打开和关闭数据库连接,在顶部打开它 - 运行所有查询并在底部关闭它或者在脚本末尾用PHP垃圾收集器关闭它