-1

mysql に接続するためのコードを PHP の別の関数に入れ、その関数を他の関数で使用したいと考えています。驚いたことに、その方法に関するオンライン リソースを見つけることができませんでした。私はこのようなことをしたい:

function connect_mysql() {

$con = mysqli_connect("localhost", "root", "somepass", "testdb");

if (mysqli_connect_errno($con)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

return $con;
}

function some_function() {
connect_mysql(); 
// and use that connection here 
//so that I don't have to retype connection code again
}

どうもありがとう!

4

2 に答える 2

2

内部で静的変数を使用して、次の方法でそれを行います。これにより、connect_mysqlMySQL 接続が 1 つだけ作成されます。

function connect_mysql() {
    static $con = null;
    if ($con == null) {
        $con = mysqli_connect("localhost", "root", "somepass", "testdb");
        if (mysqli_connect_errno($con)) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
            return null;
        }
    }
    return $con;
}

function some_function() {
    $con = connect_mysql();
    $con->prepare(...);
}

これはシングルトン パターンの例です。

于 2013-07-01T14:14:38.240 に答える
0

考慮すべき2つの考え:

(1) 関数内でオブジェクトを継続する場合はsome_function()、変数を使用します。

例:

function some_function() {
    $my = connect_mysql();
    $my->query('some great sql query...');
}

(2) 接続機能を改善するconnect_mysql()には、接続に失敗するたびに定義済みの状態で終了する必要があります。おそらく次のようになります。

function connect_mysql() {
    $con = mysqli_connect("localhost", "root", "somepass", "testdb");

    if (mysqli_connect_errno($con)) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        return false;   // <- exit here....
    }

    return $con;
}

これは必ずしも必要ではありませんが、関数の外部の問題を検出し、コードが大きくなったときにコードを維持するのに役立ちます。

于 2013-07-01T14:19:53.900 に答える