如何运行查询,直到找到一条记录?

时间:2014-12-02 05:57:05

标签: php mysql

这就是我现在正在尝试但没有运气

$bid  = $next - 2;//This subtracts 2 from the number, this number is also auto generated 

    $preid = $bid;
    $query = "SELECT * FROM  images where imageid = '$preid'";
    $sql = mysqli_query($conn,$query) or die(mysqli_error($conn));

    while(mysqli_num_rows($sql) !=0) {
        $select_query = "SELECT * FROM  images where imageid = '$preid'";
        $sql = mysqli_query($conn,$select_query) or die(mysqli_error($conn));
        --$preid;
    } 

假设发生的事情是,如果一条记录不存在,它会从preid中减去1并再次使用新的preid运行查询并继续发生,直到它找到的记录但无法弄清楚如何去做。

2 个答案:

答案 0 :(得分:0)

我假设您不断检查数据库是否有新值。但是,在大规模应用程序中,这是一种非常低效的方法来不断ping数据库。 你已经制作了一个变量$ preid但你没有在任何地方使用它 如果我按照你的方式去做那就是我会这样做的

$bid  = $next - 2;//This subtracts 2 from the number, this number is also auto generated 

$preid = $bid;
$query = "SELECT * FROM  images where imageid = '$preid'";
$sql = mysqli_query($conn,$query) or die(mysqli_error($conn));

while(mysqli_num_rows($sql) !=0 || !$preid) { //notice here i added the condition for preid.
    $select_query = "SELECT * FROM  images where imageid = '$preid'";
    $sql = mysqli_query($conn,$select_query) or die(mysqli_error($conn));
    --$preid;
} 

现在发生的情况是,只要两个条件中的任何一个保持为真,循环就会运行,即从数据库返回一行,或者它将继续搜索,直到 preid 不为0。 / p>

答案 1 :(得分:0)

如果你想测试一个空集,你的while应该在mysqli_num_rows == 0

时运行
while(mysqli_num_rows($sql) == 0) {
        $select_query = "SELECT * FROM  images where imageid = '$preid'";
        $sql = mysqli_query($conn,$select_query) or die(mysqli_error($conn));
        $preid--; 
    } 

正如@DarkBee在他的评论中提到的那样,这个代码非常容易受到无限循环的影响,只要没有任何条目就会删除你的脚本。