0

すべてがうまくいきましたが、動作を停止することを決定しただけで、プロジェクト全体が台無しになり、私は立ち往生しました。

これはエラーです:

mysql_close(): 5 は、4 行目の C:\wamp\www\Includes\footer.php の有効な MySQL-Link リソースではありません

これはfooter.php

<?php
//close connection
if (isset($dbh)); {
    mysql_close($dbh);
}
?>

これはconnect.php

//set constants
require("quick.php");

//database connection
$dbh = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
if (!$dbh) {  //check connection
        die("Cannot conect! to database ");
    }   

//selecting database
$db_select = mysql_select_db(DB_NAME, $dbh);
if (!$db_select) { //check connection
        die("Cannot connect to database ");
    }
?>

基本的に、mysql を終了しようとすると、このエラーが表示されます。そして、それは少し前まではすべてうまくいきました。

4

3 に答える 3

2

代わりにこれを試してください:

if (isset($dbh) && is_resource($dbh)) {
    mysql_close($dbh);
} else {
    mysql_close();
}

マニュアルから:

mysql_close() は、指定されたリンク識別子に関連付けられている MySQL サーバーへの非永続的な接続を閉じます。link_identifier が指定されていない場合は、最後に開かれたリンクが使用されます。

多分彼はほとんど接続を持っていません..誰が知っている..

于 2012-10-24T17:05:46.897 に答える
0

ページ内のどこかに、$dbh = 5;データベース接続をオーバーライドする puts の割り当てがあります。それがエラーの原因です。データベースの開始とフッターの間でその変数への割り当てを検索すると、問題が見つかりました。


注:接続が永続的な接続でない場合は、スクリプトの最後で閉じられるため、他のコメンターのように接続が開いていること心配する必要はありません。プロジェクト全体を台無しにします。あなたのコードはフッターでそれを閉じようとしますが、それはそれ自体を閉じるのと大差ありません。マニュアルから:

非永続的な開いているリンクはスクリプトの実行の最後に自動的に閉じられるため、通常、mysql_close() を使用する必要はありません。リソースの解放も参照してください。

于 2012-10-24T19:46:50.637 に答える
-1

mysql_*接続を指定しない場合、すべての関数は「最後に開いた接続」を想定します。これは、他のライブラリのように追跡する必要がないため便利です。ほとんどの場合、ここで変数を$dbhどこかに上書きしています。個人的には、変数を使用する場合のように変数$_connectionを使用します。

したがってmysql_close()、接続を閉じるだけで十分です。一度に複数の接続を処理している場合にのみ、この種のことを心配する必要があります。

于 2012-10-24T17:04:42.900 に答える