PHP搜索不使用CASE函数

PHP搜索不使用CASE函数,php,mysql,Php,Mysql,我有下面的搜索片段,当我只使用mysql表中的value1和value2数据时,它就工作了 当我将Mysql CASE函数添加到带有value1r和value2r的查询中,如下面的示例所示,并尝试在页面上进行搜索时,它给出了以下错误“警告:mysqli_fetch_array()期望参数1是mysqli_result,布尔值在….中给出”,这意味着我在查询中有错误 <?php if(isset($_POST['search'])) { $valueToSearch = $_POS

我有下面的搜索片段,当我只使用mysql表中的value1和value2数据时,它就工作了

当我将
Mysql CASE函数添加到带有value1r和value2r的查询中,如下面的示例所示,并尝试在页面上进行搜索时,它给出了以下错误
“警告:mysqli_fetch_array()期望参数1是mysqli_result,布尔值在….中给出”
,这意味着我在查询中有错误

<?php

if(isset($_POST['search']))
{
    $valueToSearch = $_POST['valueToSearch'];

    $query = "SELECT * FROM gdata 
    WHERE            
    Value1 = '" . $valueToSearch . "' OR
    Value2 = '" . $valueToSearch . "' OR
    Value1r = '" . $valueToSearch . "' OR
    Value2r = '" . $valueToSearch . "' 
    ";

    $search_result = filterTable($query);

}
 else {
    $query = "SELECT Value1, Value2,

  CASE
                 WHEN Value1 >= 90 AND Value1 <= 100
                 THEN 'A'
                 WHEN Value1 >= 80 AND Value1 <= 89
                 THEN 'B'
                 WHEN Value1 >= 70 AND Value1 <= 79
                 THEN 'C'  
                 WHEN Value1 >= 0 AND Value1 <= 69
                 THEN 'F'
                 ELSE '' END AS Value1r,

                   CASE
                 WHEN Value2 >= 90 AND Value2 <= 100
                 THEN 'A'
                 WHEN Value2 >= 80 AND Value2 <= 89
                 THEN 'B'
                 WHEN Value2 >= 70 AND Value2 <= 79
                 THEN 'C'  
                 WHEN Value2 >= 0 AND Value2 <= 69
                 THEN 'F'
                 ELSE '' END AS Value2r 

  FROM gdata";


    $search_result = filterTable($query);
}

// function to connect and execute the query
function filterTable($query)
{
    $connect = mysqli_connect("localhost", "root", "", "db");
    $filter_Result = mysqli_query($connect, $query);
    return $filter_Result;
}

?>

<!DOCTYPE html>
<html>
    <head>
        <title>Gdata</title>
</head>

    <body>


<form action="gdata.php" method="post">
<input type="text" name="valueToSearch" placeholder="Search"> 
<input type="submit" name="search" value="Filter"> 

<table> 
<tr>
   <th>G1</th> 
   <th>G2</th>
   <th>R1</th>
   <th>R2</th>
</tr>

<?php 
    while($row = mysqli_fetch_array($search_result))
      { 
  echo "<tr>"; 
  echo "<td>" . $row['Value1'] . "</td>"; 
  echo "<td>" . $row['Value2'] . "</td>"; 
  echo "<td>" . $row['Value1r'] . "</td>";  
  echo "<td>" . $row['Value2r'] . "</td>";   
  echo "</tr>"; 
       } 

echo "</table>";
?>     
</form>

</body>
</html>

我做错了什么?能帮我一点忙吗?谢谢


注意:我的问题并不是关于给定的错误。

您可以使用以下方法跟踪错误,将此代码片段放在
mysqli\u查询之后

if (!$filter_Result) {
    printf("Error: %s\n", mysqli_error($connect));
    exit();
}

此错误意味着查询将给出没有记录的空结果 尝试再次编写查询,并在phpmyadmin中测试它,如果它在那里工作正常,那么它将在您的应用程序启动我们的数据库时工作。
创建或替换视图gdata\u视图作为

选择Value1、Value2、CASE WHEN Value1>=90和Value1=80、Value1=70和Value1=0、Value1=90和Value2=80、Value2=70和Value2=0和Value2我在SQL语句中没有看到语法错误。尝试在
filterTable()
中放置
if($filter\u Result==false){echo mysqli\u error($connect);exit;}
要了解有关错误的更多详细信息,还应转义或删除
$valueToSearch
中的特殊字符。如果将搜索短语与
一起使用
在代码的
if
部分中会出现SQL语法错误。
else
部分在我看来是正确的。可能重复的部分可能会提供有用的信息,但不会提供问题的解决方案。@NigelRen这将提供实际错误并帮助解决问题。正如你自己所说的-这会有帮助,但这应该是一个解决方案。非常感谢!正如您所解释的,当我创建一个视图并对代码进行一点更改时,它就可以工作了。
CREATE OR REPLACE VIEW gdata_view AS
SELECT Value1, Value2, CASE WHEN Value1 >= 90 AND Value1 <= 100 THEN 'A' WHEN Value1 >= 80 AND Value1 <= 89 THEN 'B' WHEN Value1 >= 70 AND Value1 <= 79 THEN 'C' WHEN Value1 >= 0 AND Value1 <= 69 THEN 'F' ELSE '' END AS Value1r, CASE WHEN Value2 >= 90 AND Value2 <= 100 THEN 'A' WHEN Value2 >= 80 AND Value2 <= 89 THEN 'B' WHEN Value2 >= 70 AND Value2 <= 79 THEN 'C' WHEN Value2 >= 0 AND Value2 <= 69 THEN 'F' ELSE '' END AS Value2r FROM gdata
create view for gdata table.
view is your temporary table.
when you change any data in main table view automatically affected.

when you submit data change your table name in your code gdata to gdata_view (gdata_view is a temporary table <= without view is not possible)

$query = "SELECT * FROM gdata 
    WHERE            
    Value1 = '" . $valueToSearch . "' OR
    Value2 = '" . $valueToSearch . "' OR
    Value1r = '" . $valueToSearch . "' OR
    Value2r = '" . $valueToSearch . "' 
    ";
replace by
$query = "SELECT * FROM gdata_view 
    WHERE            
    Value1 = '" . $valueToSearch . "' OR
    Value2 = '" . $valueToSearch . "' OR
    Value1r = '" . $valueToSearch . "' OR
    Value2r = '" . $valueToSearch . "' 
    ";