所以我试图; - 从另一个源向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]));
}
}
?>
答案 0 :(得分:1)
注意:首先,您必须了解如何使用参数传递URL中的变量。您一直缺少如何将变量作为参数传递给URL的基本知识。
<强>规则:强>
?
标记,只有值&
符号和值。?
符号一起使用,否则代码将无效。 示例: 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.。)在选择语句时,您必须检查执行查询的计数,因为如果计数为零而您执行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]));
}
}
}
?>
完成上面提到的所有检查后,您必须确保下面的注释,以检查您的代码是否有效。
注意:首先将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;。