2016-09-30 3 views
-1

だから私はしようとしています。 - 別のソースからのHTTPリクエストをPHPファイルに送信します。そのHTTPリクエストには次のようなものが含まれます。 http://mywebsite.com/postServer.php/type=cmd&game=5342252と何がすべきかは、ポスト "ゲーム"を取って、魔女の行を見つけるためにそれをテーブルと比較して、 "gid"列に5342252を含んでいる。特定の行から特定の変数をエコーし​​ようとしています

ただし、動作しません。私は= $ _POST [「ゲームを」] $ゲームを削除し、ちょうど5342252を置けば今$ゲームは、それは$ _POST

<?php 
    $type = $_POST["type"]; 
    $game = $_POST["game"]; 
    if(type == "cmd") { 
     $con = new mysqli("localhost","***","***","***"); 
    if(mysqli_connect_errno()){ 
     echo(mysqli_connect_error()); 
    } 
     $data = $con->query("SELECT * FROM onlineservers WHERE gid =".$game); 
    while($row = $data->fetch_array()){ 
     echo json_encode(array('command' => $row[cmd])); 
    } 
    } 

?> 
+0

if(trype == 'cmd'){}を削除した場合 エラーが発生しました。 非オブジェクトのメンバ関数fetch_array()を呼び出す –

+0

コードに関するエラーを明確に説明したので、答えの解決方法を教えてくれました。見て、考えを共有する。どんな障害にも直面すれば私に知らせて、それを解決します。 –

+0

私はメモを追加し、コードをいくつかのより明確な説明で修正しました。ホープので、それはあなたに役立つだろう。ありがとう:) –

答えて

0

で動作文句を言わない理由としては非常に混乱しそうイム...それだけで正常に動作しますですし、これを試してみてください:

<?php 
$type = $_GET["type"]; 
$game = $_GET["game"]; 
if($type == "cmd") { 
    $con = new mysqli("localhost","***","***","***"); 
if(mysqli_connect_errno()){ 
    echo(mysqli_connect_error()); 
} 
    $data = $con->query("SELECT * FROM onlineservers WHERE gid =".$game); 
while($row = $data->fetch_array()){ 
    echo json_encode(array('command' => $row[cmd])); 
} 
    } 

?> 

あなたがデータを投稿しますが、データを受信し、それゆえ$_GET必要とされていません。

そしてまたあなたのURLは、このようなことshoud:

http://mywebsite.com/postServer.php?type=cmd&game=5342252 
+0

ありがとう、私はPHPを更新して今、エラーを取得しています。 非オブジェクト上のメンバ関数fetch_array()を呼び出す –

+0

@ICostaExDesigns '$ data'変数が空に戻ります。 –

0

変更$_GET["..."]ため$_POST["..."]

URLで渡す各変数は、$ _GETメソッドで取得します。

例:http://some.com/anything.php?var=testを入力すると、$_GET["var"]の場合は「テスト」が表示されます。

1

:まずパラメータでURLに変数を渡す方法を理解する必要があります。 URLにパラメータとして変数を渡す方法に関する基本的な知識が不足しています。

ルール:値とともに&シンボルで与えられる値

  • 二番目のパラメータ単独?マークが付与される

    1. 最初のパラメータ。
    2. 任意の数のパラメータを追加できます。最初のコードには?シンボルが必要です。そうしないとコードが機能しません。

    例:URLパラメータにhttp:// domain.com?first_param=1&second_param=2

    簡単な説明。

    http://domain.net/page.php?id=1254 
    

    なぜページ名の後に疑問符がありますか?

    答えは、疑問符の後の文字がHTTPクエリ文字列であることです。 HTTPクエリ文字列には、変数とその値の両方を含めることができます。上記の例では、HTTPクエリー文字列に "id"という名前の変数 "1254"が含まれています。ここで

    は別の例である:再び

    http://domain.net/page.php?name=Joe 
    

    、あなたは値( "ジョー")を変数( "名前")を有します。

    PHPで変数を取得するにはどうすればよいですか?

    PHPページのpeople.phpがあるとします。今、あなたは、次のURLを使ってこのページを呼び出すことができます。

    people.php?name=Joe 
    

    PHPを使用すると、このように「名前」変数の値を取得することができます:

    <?php 
    echo $_REQUEST['name']; // Result the Output as Joe 
    echo $_GET['name']; // Result the Output as Joe 
    ?> 
    

    のは、ANでそれを試してみましょう例:同じURLで

    <html> 
    <head> 
    <title>Query string</title> 
    </head> 
    <body> 
    <?php 
    // The value of the variable name is found 
    echo "<h1>Hello " . $_GET["name"] . "</h1>"; 
    
    // The value of the variable name is found 
    echo "<h1>Hello " . $_REQUEST["name"] . "</h1>"; 
    ?> 
    </body> 
    </html> 
    

    いくつかの変数:

    URLに変数を1つだけ渡すことに限定されません。 &で変数を分離することにより、複数の変数を渡すことができます。名前と年齢:

    people.php?name=Joe&age=24 
    

    このURLは、2つの変数が含まれています。

    $_GET["name"] 
    $_GET["age"] 
    

    のは一例に余分な変数を追加してみましょう:上記と同じ方法で、あなたはこのような変数を取得することができますあなたのコード

    1.

    <html> 
    <head> 
    <title>Query string </title> 
    </head> 
    <body> 
    <?php 
    // The value of the variable name is found 
    echo "<h1>Hello " . $_GET["name"] . "</h1>"; 
    // The value of the variable age is found 
    echo "<h1>You are " . $_GET["age"] . " years old </h1>"; 
    ?> 
    </body> 
    </html> 
    

    ソリューション)あなたのURLは以下のようになります。

    http://mywebsite.com/postServer.php/?type=cmd&game=5342252 
    

    その後だけで、あなたが$_GET OR $_REQUESTを使用する必要がURLからデータを取得するためには、別途

    2)URLからデータを取得することができます。 しかし、あなたは完全文があなたのコード内のエラーに思われる場合それは)

    ​​

    3.あるべき失態

    ある$_POSTを使用していました。

    あなたはこのようにそれを交換する必要がある:

    if($type == "cmd") {} 
    

    しかし、あなたは致命的なエラーにつながるwhochこのif(type == "cmd") {}のように行っています。

    4。)ステートメントを選択するときに、カウントがゼロで、whileまたはforeachを実行すると、エラーが発生している可能性があるため、実行されたクエリの数をチェックする必要があります。 したがって、全体のコードは次のように次のようになります。あなたは私があなたの上に言及したすべてのチェックを行った後

    <?php 
        $type = $_REQUEST["type"]; 
        $game = $_REQUEST["game"]; 
        if($type == "cmd") { 
         $con = new mysqli("localhost","***","***","***"); 
        if(mysqli_connect_errno()){ 
         echo(mysqli_connect_error()); 
        } 
         $data = $con->query("SELECT * FROM onlineservers WHERE gid =".$game); 
         $count = $data->num_rows; 
         if($count==0) 
         { 
         // perform the failure action 
         } 
         else 
         { 
         while($row = $data->fetch_array()){ 
         echo json_encode(array('command' => $row[cmd])); 
         } 
         } 
        } 
    ?> 
    

    は、あなたのコードが動作するかを確認するために、下記の注意を確保する必要があります。

    注:あなたが最初のSelectステートメントにエコー配置し、終了を置くことによって実行を中断。エコーされた文をコピーしてDBのSQLに置き、挿入時にエラーが発生していないかどうかを確認します。エラーが発生しない場合は、エコーを削除して終了を削除します。

  • 関連する問題