2013-03-14 61 views
0

我一直在這個工作了一個多月,並且在這段代碼中看不到任何錯誤。它運行良好,直到兩個月前。我開始得到這個錯誤:警告:mysql_num_rows():提供的參數不是第41行(第41行是$ num = mysql_num_rows($ result);)的functions.php中的有效MySQL結果資源。我確定它與數據庫連接並在整個文件中檢查了括號。當我使用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 = ''; 
+4

「查詢爲空」表示您的$ sql變量是空字符串。你傳遞給你的功能是什麼?調試。 – mario 2013-03-14 22:16:12

+0

我編輯了主帖以包含更多的代碼,謝謝。 – 2013-03-15 18:40:33

+0

所示代碼甚至不會運行:'$ get_user_access $ get_user_access = query_sql($ sql);'。向我們展示您實際運行的代碼。 – 2013-03-15 19:26:11

回答

1

開始通過註釋掉或query_sql()函數定義刪除mysql_close();

下面是這背後

推理你打電話mysql_close(),然後調用mysql_fetch_assoc($get_results); PHP將嘗試使用默認設置重新連接到數據庫後 - 但沒有一個有效的SQL查詢來獲取的行數/取數據出錯了。

這裏是我的建議 - 不要反覆打開和關閉數據庫連接,在頂部打開它 - 運行所有的查詢,並關閉它的底部或使用PHP垃圾回收器關閉腳本。

+0

我試過了,但仍然得到相同的「警告:mysql_num_rows():提供的參數不是有效的MySQL結果」錯誤。 – 2013-03-19 15:30:29

+0

你有沒有得到任何特定的mysql錯誤?或只是PHP錯誤? – 2013-03-19 21:40:32