尝试回显特定行中的特定变量

时间:2016-09-30 17:42:01

标签: php mysql

所以我试图; - 从另一个源向php文件发送一个HTTP请求,在该http请求中它将包含类似的内容; http://mywebsite.com/postServer.php/type=cmd&game=5342252而应该做的是采取帖子"游戏"并将其与表格进行比较,以便在列#34; gid"中找到女巫行包含5342252。

然而它不起作用。现在,如果我删除$ game = $ _POST ["游戏"]并且只需将5342252分别为$ game就可以正常工作...所以我很困惑为什么它不能用$ _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]));
     }
   }

?>

3 个答案:

答案 0 :(得分:1)

  

注意:首先,您必须了解如何使用参数传递URL中的变量。您一直缺少如何将变量作为参数传递给URL的基本知识。

<强>规则:

  1. 第一个参数只有?标记,只有值
  2. 第二个参数,带有&符号和值。
  3. 您可以添加任意数量的参数,第一个参数必须与?符号一起使用,否则代码将无效。
  4. 示例: http:// domain.com?first_param=1&second_param=2

    URL参数的简要说明。

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

    为什么页面名称后面有问号?

    答案是问号后面的字符是HTTP查询字符串。 HTTP查询字符串可以包含变量及其值。在上面的示例中,HTTP查询字符串包含名为“id”的变量,值为“1254”。

    这是另一个例子:

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

    同样,你有一个带有值(“Joe”)的变量(“name”)。

      

    如何使用PHP获取变量?

    假设您有一个名为people.php的PHP页面。现在,您可以使用以下URL调用此页面:

    people.php?name=Joe
    

    使用PHP,您将能够获得变量'name'的值,如下所示:

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

    让我们在一个例子中尝试:

    <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>
    
      

    同一网址中的几个变量:

    您不仅限于在网址中传递一个变量。通过使用&amp; 分隔变量,可以传递多个变量:

    people.php?name=Joe&age=24
    

    此网址包含两个变量:名称和年龄。以与上面相同的方式,您可以获得如下变量:

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

    让我们在示例中添加额外的变量:

    <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>
    

    您的代码解决方案

    1。)您的网址应如下所示。

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

    然后,您可以单独从URL中检索数据

    2.。)为了从网址获取数据,您必须使用$_GET$_REQUEST但您使用$_POST这完全是一个错误

    应该是

    $type = $_REQUEST["type"];
    $game = $_REQUEST["game"];
    

    3。)如果您的代码中的语句似乎有错误。

    您必须将其替换为:

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

    但你这样做if(type == "cmd") {}会导致致命的错误。

    4.。)在选择语句时,您必须检查执行查询的计数,因为如果计数为零而您执行whileforeach,则可能会遇到错误。 因此,整个代码如下所示:

    <?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]));
           }
           }
       }
    ?>   
    

    完成上面提到的所有检查后,您必须确保下面的注释,以检查您的代码是否有效。

      

    注意:首先将echo放入Select语句,然后通过退出来中断执行;然后复制回显的语句并将其放在DB的SQL中,然后检查插入中是否发生错误。如果没有错误发生,请删除echo并删除退出;

答案 1 :(得分: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

你的网址也应该是这样的:

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

答案 2 :(得分:0)

更改$_POST["..."]的{​​{1}}。

您在URL中传递的每个变量都是通过$ _GET方法获得的。

示例:如果您执行$_GET["..."] http://some.com/anything.php?var=test,您将获得&#34;测试&#34;。