查询为空,以及其他错误

时间:2013-03-14 22:13:39

标签: php mysql

我已经在这方面工作了一个多月了,并且在这段代码中看不到任何错误。它工作正常,直到大约两个月前。我开始收到此错误:警告: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 = '';

1 个答案:

答案 0 :(得分:1)

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

这是

背后的原因

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

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