我正在尝试实现快速搜索栏来搜索由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{
答案 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
}