0

私はこれに 1 か月以上取り組んできましたが、このコードにエラーは見られません。2ヶ月ほど前までは問題なく使えていました。このエラーが発生し始めました:警告: mysql_num_rows(): 提供された引数は、41 行目の functions.php の有効な MySQL 結果リソースではありません(41 行目は $num=mysql_num_rows($result);)。データベースに接続していることを確認し、ファイル全体のブラケットをチェックしました。mysql_error を使用してエラーをチェックすると、以下に示すようにQuery was empty on line 40 でハングアップします。ここでスタックオーバーフローの投稿を読んで、これを理解しようと何時間も費やしましたが、もう少し助けが必要です。ありがとう。

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 に答える