2012-05-09 22 views
0

出力:MySQLのない有効なressource

警告:するmysql_query():6はCで有効なMySQLのリンクリソースではありません... \ライン94

$con = mysql_connect($GLOBALS['mysql_host'], $GLOBALS['mysql_username'], $GLOBALS['mysql_password']) or die(mysql_error()); 
$db = mysql_select_db($GLOBALS['mysql_database']) or die(mysql_error($con)); 


$username=sanitize_mysql($username); 
$password=sanitize_mysql($password); 
$email=sanitize_mysql($email); 

if(check_exists("users", "username", $username) == FALSE){ 
    $query = "INSERT INTO users VALUES('".$username."','".$password."','".$email."','".$status."','".$reg_date."','".$own_ref_id."','')"; 
    $result = mysql_query($query,$con) or die(mysql_error($con)); 
    return TRUE; 
} else { 
    return FALSE; 
} 
mysql_close($con); 

作品にmysql_helper.phpこの(コピー/貼り付け)のように構築された他のすべての機能

にこれはそれが表示されますcheck_exists

function check_exists($table,$specifier,$value) 
{ 
    $con = mysql_connect($GLOBALS['mysql_host'], $GLOBALS['mysql_username'], $GLOBALS['mysql_password']) or die(mysql_error()); 
    $db = mysql_select_db($GLOBALS['mysql_database']) or die(mysql_error($con)); 


    $query = "SELECT * FROM ".$table." WHERE ".$specifier." = '".$value."'"; 
    $erg = mysql_query($query) or die(mysql_error()); 

    while ($row = mysql_fetch_array($erg)) { 
     mysql_close($con); 
     return TRUE; 
    } 
    mysql_close($con); 
    return FALSE; 
} 
+0

'sanitize_mysql()'または 'check_exists()'は '$ con'に触れていますか? – eggyal

+0

check_existsを追加しました –

答えて

4

ですのcheck_exists()$conと同じスコープにあるため、check_exists()が最初にオーバーライドして元の接続を無効にした後、mysql_close($con)を呼び出すと、独自の接続が閉じられます。

このようなすべての機能を使用するために開いている1つの接続を維持することをお勧めします。

+0

check_existsの$ conを$ con2に変更しても、動作しません。どのように私はただ1つの接続を使用できると思いますか? mysqlアクセスを使用しているすべての関数の引数として$ conを渡しますか? –

+0

@LiamSchnell:グローバル変数にアクセスするために各関数の先頭に 'global $ con'を宣言します(mysql_helperがクラスの場合、メンバ変数' $ this-> con'を使用できます)。 – eggyal

+0

私はこれと一緒に行くと思う:[リンク](http://stackoverflow.com/questions/10208691/do-i-need-a-php-mysql-connection-in-each-function-that-uses-database ) –

関連する問題