我需要在我的代码中使用goto运算符,因为我似乎无法想到解决它的方法.但问题是我的主机只安装了PHP版本5.2.17.
有任何想法吗?
以下是我的代码:
if ($ready !=="y")
{
$check=mysql_query("SELECT `inserted` FROM `team`");
$numrows = mysql_num_rows($check);
$i="0";
while ($i<$numrows && $row = mysql_fetch_assoc($check))
{
$array[$i] = $row['inserted'];
$i++;
}
if (in_array("n", $array))
{
goto skip;
}
else
{
mysql_query("
UPDATE game SET ready='y'
");
}
}
skip:
Run Code Online (Sandbox Code Playgroud)
您的代码中有一些反模式.我们来清理吧.我会解释一下这里有什么变化.
if($ready !== "y") {
$sth = mysql_query("SELECT inserted FROM team WHERE inserted = 'n'");
if(mysql_num_rows($sth) > 0) {
mysql_query("UPDATE game SET ready = 'y'");
}
}
Run Code Online (Sandbox Code Playgroud)
首先要做的事情是:不需要执行查询,获取所有结果,然后遍历这些结果(in_array)查找特定值.让数据库通过仅查找inserted字符串文字的行来为您执行此操作"n".
因为我们知道我们只"n"收回记录,所以我们只需检查是否有任何结果.如果是,请运行查询.如果没有"n"记录,UPDATE则不运行.
如果你需要知道UPDATErun,请为它添加一个检查:
$ran_update = false;
if($ready !== "y") {
$sth = mysql_query("SELECT inserted FROM team WHERE inserted = 'n'");
if(mysql_num_rows($sth) > 0) {
mysql_query("UPDATE game SET ready = 'y'");
$ran_update = true;
}
}
if($ran_update) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1555 次 |
| 最近记录: |