带标志的搜索功能

时间:2016-09-18 04:28:12

标签: php mysql

我正在尝试实现快速搜索栏来搜索由SQL数据库填充的表。搜索不会搜索表,但会生成SQL语句并搜索数据库。我需要使用PHP来实现一个搜索功能,它将使用标志来停止搜索。到目前为止,这是我的代码:

//THIS CODE WILL EXECUTE WHEN THE SEARCH BUTTON IS PRESSED
if($_REQUEST['btnsearch']){

    if(isset($_POST['quicksearch']) and !empty($quicksearch)){

        $sql = "SELECT column_name FROM information_schema.columns WHERE table_name ='alerts_table'
        AND column_name IN('name', 'year','make','model','alert','date')";

        $retvalues = mysqli_query($conn, $sql);
        $data = array();
        //LOOP POPULATES THE ARRAY WITH THE CURRENT COLUMN NAMES.
        for($counter = 0; $counter <= $row=mysqli_fetch_array($retvalues, MYSQL_ASSOC); $counter++){

            $string = $row["column_name"];

            $data[$counter] = $string;
        }

        $length = count($data);

        $flag = 1;

        while($flag == 1){

            for($x = 0; $x <= $length - 1; $x++){

                $sql3="SELECT * FROM alerts_table WHERE $data[$x] = $quicksearch";
                $retvalues2=mysqli_query($conn, $sql3);

                if(!empty($retvalues2))
                {
                    //POPULATE THE TABLE WITH RESULTS HERE !!!!!!!!!

                    $flag = -1; ///HOW CAN I BREAK THE LOOP???

                }
            }
        }
    }else{

1 个答案:

答案 0 :(得分:0)

来自PHP break文档:

  

(PHP 4,PHP 5,PHP 7)

     

break结束当前执行,foreach,while,do-while或   开关结构。

     

break接受一个可选的数字参数,告诉它有多少   嵌套的封闭结构将被打破。默认值   是1,只有直接封闭结构被打破。

在你的情况下你有两个循环;一个while循环和一个内部for循环。您可以将内循环中的标记设置为一个停止while循环的值,然后使用break停止for循环。

$flag = 1;

while($flag == 1){
    for($x = 0; $x <= $length - 1; $x++){
        // ...
        if(!empty($retvalues2))
        {
            $flag = -1; // set while condition to false
            break; // break out of for loop
        }
    }

    // execution continues here after break
    // end of while body, start next loop iteration
    // $flag == 1 => false, and the while loop will end
}