2016-09-30 3 views
-1

Так что я пытаюсь; -отсылка HTTP-запроса из другого источника в файл php, в рамках этого http-запроса он будет содержать что-то вроде: http://mywebsite.com/postServer.php/type=cmd&game=5342252 и что нужно делать, это взять сообщение «игра» и сравнить его со столом, чтобы найти строку ведьмы, содержащую 5342252 в столбце «gid».Попытка повторить определенную переменную из определенной строки

Однако его не работает. Теперь, если я удалю $ игра = $ _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

Если я удалю, если (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 Шоуда быть так:

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

Спасибо, я обновил php и теперь im получаю ошибку; Вызов функции-члена fetch_array() для не-объекта –

+0

@ICostaExDesigns Ваша переменная '$ data' возвращается пустым. –

0

Изменение $_POST["..."] для $_GET["..."].

Каждая переменная, передаваемая по URL-адресу, получается методом $ _GET.

Пример: Если вы делаете http://some.com/anything.php?var=test, если вы делаете $_GET["var"], вы получите «тест».

1

Примечание: Сначала вы должны понять, как передать переменные в URL с параметрами. Вам не хватает базовых знаний о том, как передавать переменные в качестве параметров в URL-адресе.

Правила:

  1. Первый параметр будет дано с только ? знаком со значением
  2. Второй параметр в которой будет вестись с & символом вместе со значениями.
  3. Вы можете добавить любое количество параметров, чтобы первый из них был с символом ?, иначе код не будет работать.

Пример: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").

Как получить переменную с помощью 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 
?> 

Давайте попробуем его в пример:

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

Вы не ограничены пропусками только одной переменной в URL-адресе. Разделяя переменные с &, несколько переменных могут быть переданы:

people.php?name=Joe&age=24 

Этот URL содержит две переменные: имя и возраст. Точно так же, как и выше, вы можете получить переменные, как это:

$_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.) Ваш URL должен быть таким, как я сказал ниже.

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

Только тогда вы можете получить данные из URL отдельно

2.) Для того, чтобы получить данные из URL, вы должны использовать $_GET$_REQUEST ИЛИ. Но вы использовали $_POST который полностью промах

Это должно быть

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

3.) Если заявление, кажется, ошибка в коде.

Вы должны заменить его, как это:

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

Но вы сделали, как этот if(type == "cmd") {} whoch приводит к фатальной ошибке.

4.) При выборе операторов вы должны проверить счетчик выполненного запроса, так как если счетчик равен ZERO, и вы выполняете 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])); 
     } 
     } 
    } 
?> 

После того, как вы сделали все проверки, которые я уже упоминал выше, вы должны обеспечить примечание ниже, чтобы проверить ваш код работает или нет.

Примечание: Вы первый положил эхо ЗЕЬЕСТ, а затем прервать выполнение, поставив выход; и вы скопируете оператор, который будет эхом, и поместите его в SQL БД, а затем проверьте, не возникает ли какая-либо ошибка при вставке. Если ошибка не возникает, удалите эхо и удалите выход;

Смежные вопросы