使用SEARCH函数过滤现有表时出错

时间:2013-11-23 06:47:06

标签: php mysql search html-table

我的网站上有一个数据表,我想添加搜索功能,这些功能可能基于名称,类型和日期等标准,因为表格中的数据与事件有关。

我需要在同一个表中过滤结果,但是我收到了这个错误:

  

捕获致命错误:类mysqli_result的对象无法转换为字符串

这是我的表格代码:

 <?php

    if(isset($_POST['searchbox']) && $_POST['searchbox'] !=""){
        $search=preg_replace('#[^a-z 0-9?!]#i','',$_POST['searchbox']);


      $user="admin";
      $pass="neehahs";
      $host="localhost";
      $db_name="eventregisteration";

      $con=mysqli_connect($host, $user, $pass, $db_name);
          if(mysqli_connect_errno($con)){
           echo "Failed to connect to MySQL: " . mysqli_connect_error();
          }
          if($_POST['select']=="type"){
        $sqlcommand="SELECT * FROM eventform WHERE event_type LIKE '%$search%'";    


        }
        elseif($_POST['select']=="name"){
        $sqlcommand="SELECT * FROM eventform WHERE event_name LIKE '%$search%'";        


        }
          $sqldata=mysqli_query($con,$sqlcommand)
          or die("Error Getting Data");

          $count=mysqli_num_rows($sqldata);
          if($count>1){
              while($row=mysqli_fetch_array($sqldata)){
            echo "<tr align=center><td>";
              echo $row['event_code'];

              echo "</td><td>";
              echo $row['event_name'];
              echo "</td><td>";

              echo $row['event_type'];
              echo "</td><td>";

              echo $row['event_level'];
              echo "</td><td>";

              echo $row['start_date'];
              echo "</td><td>";

              echo $row['end_date'];
              echo "</td><td>";

              echo $row['points'];
              echo "</td><td>";

              echo $row['pic'];
              echo "</td><td>";

              echo $row['video'];
              echo "</td><td>";

              echo $row['description'];
              echo "</td></tr>";

              }


          }else{
              $search_output="<hr/>0 Results for<strong>$sqldata</strong><hr/>$sqlcommand";

    }
    }

    ?>

1 个答案:

答案 0 :(得分:1)

问题在于这一行:

$search_output="<hr/>0 Results for<strong>$sqldata</strong><hr/>$sqlcommand";

mysqli_query会返回mysqli_result个对象。连接到$search_output时,PHP尝试将$sqldata转换为字符串,这是根本无法完成的。这就是错误所指的内容。

考虑上下文(在邮件中并使用<strong>标记封装),您可能使用的是$search而不是$sqldata


我还考虑从该消息中删除$sqlcommand,除非它是出于当前调试会话的目的,否则它会显示有关内部的重要信息,这些信息会暗示安全漏洞。