2

以下の関数を mysql_query コマンドと mysql_fetch_array コマンドの間に呼び出して、データベースに接続して閉じることに何か問題がありますか?

<?php

function dbconnect()
{   
    $sql = "localhost"; 
    $username = "------";
    $password = "-----";
    $connection = mysql_connect($sql, $username, $password) or 
    die("unwable to cct");
    $databse = mysql_select_db("-------", $connection); 
    global $connection;
}

function close()
{
    global $connection;
    mysql_close($connection);
}

dbconnect();
$query = "Some SQL Statement";
$data = mysql_query($query, $connection); - L1
while (mysql_fetch_assoc($data))
{
  //echo something 
}
close();
?>

現在、L1 の $connection はリソースである必要があるが BOOL であるというエラーが表示されます。そこでdieステートメントを出すと、同じことがトリガーされます。何が悪いのかわかりません。できる限りのエラーを見つけてください。コーディングからサバティカルを取らなければならず、しばらくして戻ってきました。

ありがとうございます。それでは、お元気で

4

4 に答える 4

2

変数を割り当てるglobalにキーワードを使用する必要があります。それ以外の場合は、関数内で local を宣言してから、まだ存在しない global への参照を呼び出します。他の関数では、その存在しないグローバルが使用されます。$connection$connection$connection

function dbconnect()
{   
    // Global first to be sure the subsequent $connection is the global
    // rather than a new one local to this function
    global $connection;

    $sql = "localhost"; 
    $username = "------";
    $password = "-----";
    // Now this modifies the global $connection
    $connection = mysql_connect($sql, $username, $password) or die("unwable to cct");
    $databse = mysql_select_db("-------", $connection); 
}

より読みやすいのは、$GLOBALS配列を使用することです。

function dbconnect()
{   
    $sql = "localhost"; 
    $username = "------";
    $password = "-----";

    // Using the $GLOBALS superglobal array
    $GLOBALS['connection'] = mysql_connect($sql, $username, $password) or die("unwable to cct");
    $databse = mysql_select_db("-------", $GLOBALS['connection']); 
}

$connection何よりも、その値から戻っdbconnect()て他の関数で使用することをお勧めします。

function dbconnect()
{   
    $sql = "localhost"; 
    $username = "------";
    $password = "-----";
    $connection = mysql_connect($sql, $username, $password) or 
    die("unwable to cct");
    $databse = mysql_select_db("-------", $connection);

    // Return from the function
    return $connection; 
}

// call as 
$connection = dbconnect();
// and define your other functions to accept $connection as a parameter
于 2012-11-14T21:35:22.303 に答える
1

mysql_connect()を呼び出す前にグローバル$connectionを宣言します

function dbconnect()
{   
    global $connection;
    $sql = "localhost"; 
    $username = "------";
    $password = "-----";
    $connection = mysql_connect($sql, $username, $password) or 
    die("unwable to cct");
    $databse = mysql_select_db("-------", $connection); 
}
于 2012-11-14T21:35:44.767 に答える
0

よくわかりませんが、使用して閉じてみてください

mysql_Close($Connection);

他のすべてはよさそうだ

于 2012-11-14T21:31:50.847 に答える
0

グローバル $connection; を置くだけです。代わりに関数の先頭に行を追加すると、機能するはずです。関数の最後で global キーワードを使用すると、グローバル変数 $connection を使用することを意味します。しかし、これから行うことは、グローバル変数 $connection に「実際の接続リソース ID」を割り当てることです。

于 2012-11-14T21:42:53.930 に答える