1

関数内でデータベースに接続するにはどうすればよいですか? ...私は現在これを行っています:

基本的なデータベースへの接続:

$conn = mysqli_connect('localhost', 'root', '', 'foo');

if (mysqli_connect_errno()) {
      printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

関数:

関数を作成するときは、その中に接続クエリを再度含める必要があります

    function cleanup($str, $real) {
           if(get_magic_quotes_gpc() == true){
                $str = stripslashes($str);
        }

         $str = htmlspecialchars($str);

   if($real == true) {

       // connection query here again

        $conn = mysqli_connect('localhost', 'root', '', 'foo');

        $str  = mysqli_real_escape_string($conn,$str);

        }
         return $str;
    }

ホスト、ユーザーを追加し、詳細を2回渡す必要があるため、これはばかげているように思えます。基本的な接続で両方を処理することを望みます

4

2 に答える 2

4

これはスコープによるものです。関数内では、グローバル スコープで定義された変数に自動的にアクセスすることはできません。次のように、関数のローカル スコープに変数を「インポート」できます。

function cleanup($str, $real) {
    global $conn;

    if(get_magic_quotes_gpc() == true) {
        $str = stripslashes($str);
    }

    $str = htmlspecialchars($str);

    if($real == true) { 
        $str  = mysqli_real_escape_string($conn,$str);
    }

    return $str;
}
于 2013-07-05T18:04:57.160 に答える
1
global $conn = mysqli_connect('localhost', 'root', '', 'foo');

データベースの $conn インスタンスをグローバルにすると、どのコードでもそれを利用できます。

if($real == true) {
    global $conn;
    $str  = mysqli_real_escape_string($conn,$str);
  }
  return $str;
}
于 2013-07-05T18:04:11.587 に答える