0

最近問題が発生しました。php ファイルに関数を作成しました。同じファイルから関数を呼び出そうとしていますが、呼び出すと 500 内部サーバー エラーが発生します。

function messageThem($match, $message) {


if(isset($match) & isset($message)) {
$query = "SELECT gcm FROM gcm_users";
$result = $con->query($query, MYSQLI_USE_RESULT);

$regID = array();
while($r = mysqli_fetch_array($result)) {
$regID[] = $r["gcm"];
}



$url = "https://gcm-http.googleapis.com/gcm/send";
$api = "REMOVED. API KEY MAY NOT BE SHARED";
$data = array('match' => $_POST['match'], 'message' => $_POST['message']);
$fields = array('registration_ids' => $regID,'data' => $data);
$headers = array('Authorization: key=' . $api,
             'Content-Type: application/json');



printf("np bro");

//curl connection
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

$resultCurl = curl_exec($ch);

  if ( curl_errno( $ch ))
{
    echo 'GCM error: ' . curl_error( $ch );
}

curl_close($ch);

echo $resultCurl;


}


}
messageThem("1200","message goes here");

これで得られる唯一のことは、内部サーバー エラーです。しかし、関数を削除してコードを実行すると、完全に機能します。そのため、呼び出したいときに好きで、内部サーバーエラーが発生します。

4

1 に答える 1

2

$con変数が定義されておらず、その上でメソッドを呼び出すため、エラーが発生queryします-間違いなくスコープの問題です。おそらくエラーが発生しました: Fatal error: Call to a member function query() on a non-object

したがって、2 つの解決策があります。

  1. 使用する必要があります

global $con;

  1. $conまたは関数に 3 番目の引数として渡す必要があります。

$conここでは、それが db 接続のオブジェクトであると想定しています。

于 2015-07-26T08:57:46.417 に答える