我有一个包含六个记录的数据库表,这些记录是六个不同闪亮服务器的URL。有一个程序可以实时填充每个服务器是否可用。我编写了一个返回第一个可用服务器的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*
当我执行时,我在地址栏中得到了#34; 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);
我得到第一个可用的网址,我可以看到结果打印为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&#34 ;;&#39;获得了预期的结果。但我收到错误消息&#34;状态无法更新。&#34;我已经这么久了,我担心我会忽略一些事情。代码有问题,或者DB表有问题吗?我查看了由其他人创建的数据库表,我注意到它没有唯一的列。
有了prodigitalson和Dan08的帮助,我有一个可行的脚本。如下
使用error_reporting(E_ALL);
$ q =&#34;来自ShinyServers的SELECT url WHERE可用性=&#39; 1&#39;限制0,1和#34 ;; // make query
$ r = mysqli_query($ dbc,$ q); $ row = mysqli_fetch_array($ r,MYSQLI_ASSOC);
// printf(&#34;%s \ n&#34;,$ row [&#34; url&#34;]);
$ url = sprintf(&#34;%s&#34;,$ row [&#34; url&#34;]); //将结果分配给变量
// echo&#34; $ url&#34;;
$ qu =&#34; UPDATE ShinyServers SET Availability = 0 WHERE url =&#39; $ url&#39;限制1&#34 ;;
$ ru = mysqli_query($ dbc,$ qu);
if(mysqli_affected_rows($ dbc)== 1){ echo&#39;
状态已更新
&#39;;
}否则{ 回声&#39;状态无法更新
&#39;;
}
mysqli_close($ DBC);
标题(&#34;位置:http:// $ url&#34;);
出口();
我的数据库表已更新,我被重定向(我知道我不需要条件语句)。我还了解到&#34;标题&#34;函数必须在mysqli_close之后。我发现在php手册中。稍微调整一下然后我就可以将这个脚本结合到注册脚本和登录脚本中。霍普...再次感谢。
答案 0 :(得分:0)
这是我的最终剧本,它完美无缺