1

以下のスクリプトは、100 個のデータベースのスキーマを更新するために使用されます。

mysql_connect を 1 回呼び出していますが、mysql_select_db によって別の接続が確立されますか? それとも問題ありませんか? (このスクリプトを実行して、100 ほどのデータベースのスキーマを更新します)

$conn = mysql_connect("localhost", "root", "PASSWORD");
$show_db_query = mysql_query('SHOW databases');
$databases = array();
while ($row = mysql_fetch_assoc($show_db_query)) 
{ 
    if (!in_array($row['Database'], $exclude_dbs))
    {
        $databases[] = $row['Database'];
    }
}

foreach($databases as $database)
{
    mysql_select_db($database, $conn);
    echo "Running queries on $database\n***********************************\n";
    foreach($sql_queries as $query)
    {
        if (!empty($query))
        {
            echo "$query;";
            if (!mysql_query($query))
            {
                echo "\n\nERROR: ".mysql_error()."\n\n";
            }
        }
    }
    echo "\n\n";
}
4

1 に答える 1

1

最後の接続が見つかった場合、または呼び出しステートメントで接続識別子が指定されている限りmysql_select_db、新しい接続は作成されません。

接続識別子を渡しているため、mysql への新しい接続は作成されません。この複数接続の場合は安全ですが、mysql延長が維持されなくなっていることに注意してください。mysqliまたはを試すことができますPDO

于 2012-11-11T14:24:21.760 に答える