У меня есть таблица базы данных с шестью записями, которые являются 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... еще раз спасибо.
Это мой последний скрипт, и он отлично работает
@
для подавления ошибокprintf()
отправляет вывод в браузер (что приведет к сбоюheader
) и возвращает длину выведенной строки, поэтому$url
не содержит того, что вы думаете.