禁用记录后查找下一条记录?

时间:2014-07-07 16:29:10

标签: php mysql database

我创建了一个函数changeIp()来禁用记录并返回一条新记录。正如您所看到的,我正在使用3个SQL查询。

有没有更好的方法来减少SQL查询的数量?

function changeIp() {

    // Find 1 record which is not disabled
    $SQL = "SELECT * FROM ip WHERE disable = 0 order by id limit 1";
    $qIp = mysql_query($SQL) or die(mysql_error());
    $qrow = mysql_fetch_assoc($qIp);

    // Disable a record
    $id = $qrow['id'];
    $SQL = "UPDATE ip set disable = 1 WHERE id = $id";
    mysql_query($SQL) or die(mysql_error());

    // Return the next record
    $SQL = "SELECT * FROM ip WHERE disable = 0 order by id limit 1";
    $qIp = mysql_query($SQL) or die(mysql_error());
    $qrow = mysql_fetch_assoc($qIp);

    return $qrow['ip'];
}

1 个答案:

答案 0 :(得分:0)

你应该使用“mysqli”或php,但这与你的问题不同。

您的查询没问题。您无法在单个语句中真正执行updateselect。您可以使用ip(id, disable)上的索引来提高效果。并且,ip(disable, id)上的索引也可能是有益的,具体取决于许多因素。