Синтаксис перенаправления PHP с использованием результатов запроса MySQL

0

У меня есть таблица базы данных с шестью записями, которые являются URL-адресами для шести разных блестящих серверов. Существует программа, которая в реальном времени заполняет доступность каждого из серверов. Я написал запрос, который возвращает URL-адрес первого доступного сервера. Я протестировал скрипт и решил, что процесс выбора работает. Теперь я хочу выполнить перенаправление на доступный сервер, используя функцию "header", и мне трудно определить правильный синтаксис. URL-адреса находятся в формате "muscle.mysite.com:3535nameScan". Вот что я имею в настоящее время.

$q = "SELECT url FROM ShinyServers WHERE Availability = '1' LIMIT 0, 1 ";

$r = mysqli_query($dbc, $q);

$row = mysqli_fetch_array($r, MYSQLI_ASSOC);
//printf ("%s\n", $row["url"]);

 $url= printf ("%s\n", $row["url"]);

 header ("Location: $url");  //redirect to muscle*

 mysqli_close($dbc);

 exit();  //before or after mysqli_close?  I think after.

Когда я выполняю, я вижу mysite.com/40 в адресной строке, и я получаю 404.

Я попробовал это:

header ("Location: $row");  //redirect to muscle*

Когда я выполняю, я получаю "mysite.com/array в адресной строке, и я получаю свою страницу 404. Я пробовал много вариантов, и я полностью смутил себя.

Надеюсь, вы увидите, что я пытаюсь сделать. Я поддержал работу, которая

$q = "SELECT url FROM ShinyServers WHERE Availability = '1' LIMIT 0, 1 ";

$r = mysqli_query($dbc, $q);

$row = mysqli_fetch_array($r, MYSQLI_ASSOC);

printf ("%s\n", $row["url"]);

mysqli_close($dbc);

Я получаю первый URL-адрес, который доступен, и я могу увидеть результаты, напечатанные как muscle.mysite.com:3535nameScan. Теперь мне нужно зафиксировать результаты как переменную, которую я могу использовать в запросе UPDATE и в функции заголовка. Я искал ответ, и пока не нашел его. Я думал, что другой командой fetch будет ответ, но я не смог найти тот, который будет применяться к тому, что я хочу сделать.

Я считаю, что я направляюсь в правильном направлении, используя мое предложение использовать "sprintf". Тем не менее, я все еще не могу "обновить" таблицу. Вот где я сейчас.

   error_reporting(E_ALL);

$q = "SELECT url FROM ShinyServers WHERE Availability = '1'  LIMIT 0, 1 ";  //make query

$r = mysqli_query($dbc, $q);
 $row = mysqli_fetch_array($r, MYSQLI_ASSOC);


//printf ("%s\n", $row["url"]);

$url= sprintf ("%s\n", $row["url"]);  //assign results to a variable?

echo "$url";

$qu = "UPDATE ShinyServers SET Availability = 0 WHERE url = $url LIMIT 1";

$ru = mysqli_query($dbc, $qu);

if (mysqli_affected_rows ($dbc) ==1){

echo '<p> The status has been updated</p>';

}else{

echo '<p class="error"> The status could not be updated</p>';

}

Я получаю ожидаемые результаты от "echo" $ url "; Но я получаю сообщение об ошибке "Статус не может быть обновлен". Я был так долго, боюсь, что я что-то не замечаю. Есть ли проблема с кодом или может быть проблема с таблицей DB? Я посмотрел таблицу DB, созданную кем-то еще, и заметил, что у нее нет уникального столбца.

С помощью prodigitalson и Dan08 у меня есть сценарий, который работает. Это выглядит следующим образом

error_reporting (E_ALL);

$ q = "SELECT url FROM ShinyServers WHERE Доступность = '1' LIMIT 0, 1"; //сделать запрос

$ r = mysqli_query ($ dbc, $ q); $ row = mysqli_fetch_array ($ r, MYSQLI_ASSOC);

//printf ("% s\n", $ row ["url"]);

$ url = sprintf ("% s", $ row ["url"]); // присваиваем результаты переменной

//echo "$ url";

$ qu = "UPDATE ShinyServers SET Availability = 0 WHERE url = '$ url' LIMIT 1";

$ ru = mysqli_query ($ dbc, $ qu);

if (mysqli_affected_rows ($ dbc) == 1) {echo '

The status has been updated Статус обновлен

'; ";

}else{ echo ' The status could not be updated } else {echo 'Статус не может быть обновлен

'; ";

} }

mysqli_close ($ DBC);

header ("Местоположение: http://$ url");

Выход();

Моя таблица БД обновлена, и я перенаправлен (я знаю, что мне не нужен условный оператор). Я также узнал, что функция "header" должна быть после mysqli_close. Я нашел это в руководстве по php. Немного больше настроек, а затем у меня есть задача выйти замуж за этот скрипт в скрипт регистрации и скрипт входа. Whoppee... еще раз спасибо.

  • 2
    Прекратить использование @ для подавления ошибок
  • 1
    Частично ваша проблема заключается в том, что printf() отправляет вывод в браузер (что приведет к сбою header ) и возвращает длину выведенной строки, поэтому $url не содержит того, что вы думаете.
Показать ещё 9 комментариев
Теги:
mysqli

1 ответ

0
Лучший ответ

Это мой последний скрипт, и он отлично работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню