PHP重定向语法利用mysqli查询的结果


PHP redirect syntax utilizing results of mysqli query

我有一个包含六条记录的数据库表,这些记录是六个不同闪亮服务器的url。有一个程序可以实时填充每个服务器是否可用。我写了一个查询,返回第一个可用服务器的url。我已经测试了脚本,并确定选择过程是有效的。我现在想使用"header"函数重定向到可用的服务器,但我很难确定正确的语法。网址的格式是"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查询和头函数中使用。我一直在寻找答案,但我还没有找到。我以为一个不同的获取命令会是答案,但我找不到一个适用于我想做的事情的命令。

我相信我正朝着正确的方向前进,我使用了使用"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表,发现它没有唯一的列。

在神童和丹08的帮助下,我有了一个行之有效的剧本。如下

error_reporting(E_ALL);

$q="从ShinyServers WHERE Availability='1'LIMIT 0,1中选择url"//进行查询

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

状态已更新

';

}其他{echo"状态无法更新

";

}

mysqli_close($dbc);

header("位置:http://$url");

exit();

我的DB表被更新,我被重定向(我知道我不需要条件语句)。我还了解到"header"函数必须在mysqli_close之后。我在php手册中发现了这一点。再做一点调整,然后我的任务是将这个脚本结合到注册脚本和登录脚本中。Whopie。。。再次感谢。

这是我的最后一个脚本,它非常适合

<?php
//selecting available server and update status
include_once '../DB/test1DB.php'; //connect to DB
error_reporting(E_ALL);
$q = "SELECT url FROM ShinyServers WHERE Availability = '0'  LIMIT 0, 1 ";  //make query
$r = mysqli_query($dbc, $q);
$row = mysqli_fetch_array($r, MYSQLI_ASSOC);
$url = sprintf("%s", $row["url"]);  //assign results to a variable
$qu = "UPDATE ShinyServers SET Availability = 1 WHERE url = '$url' LIMIT 1";
mysqli_close($dbc);
header("Location: http://$url");
exit();