次のようにアクセスすると完全に機能するPHPデータベース接続があります。
$con = mysqli_connect("localhost","username","password","database");
$result = mysqli_query($con, $query);
引数として渡すことで、関数でアクセスすることもできます。
function test($con, $args) {
$query10 = "select name from table where id = '$args[0]'";
$result10 = mysqli_query($con, $query10);
}
test($con, array('value1','value2'));
ただし、別の関数によって呼び出される関数から接続にアクセスしようとすると:
mainFunction() {
test($con, array('value1','value2'));
}
「faultCode0faultStringWarning:mysqli_query() は、パラメーター 1 が mysqli であると想定しています。null が指定されています」というメッセージが表示されます。
変数を mainFunction に渡してから 2 番目の関数に渡すと機能しますが、他のすべての変数にも同じことが当てはまるため、パラメーターが多すぎる非常に読みにくいコードが作成されます。
そこでグローバル変数を使ってみたのですが、なぜかうまくいきません。ランニング
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
これは、PHP のドキュメント ( http://php.net/manual/en/language.variables.scope.php ) によると 3 を返す必要が あるため、PHP 構成の何かが間違っていると思われます。
グローバル変数を機能させるにはどうすればよいですか、またはネストされた関数から複数回渡さずに変数にアクセスする別の方法はありますか?
PHP のバージョンは 5.3.10-1ubuntu3.8 で、Zend フレームワークもインストールされています。他の情報が必要な場合はお知らせください。