2016-11-12 5 views
0

i erstellt eine Suchfunktion, die Suchen und Abrufen von Daten in der Datenbank, aber habe diesen Fehlermysqli_num_rows() erwartet 1 Parameter MySQLi_Result php

mysqli_num_rows() erwartet Parameter 1 werden MySQLi_Result php in Linie 16

zu sein

hier ist mein pHP-Code

<?php 
    include 'database_conn.php'; 

    //collect search title 
    if (isset($_GET['keywords'])){ 

     $searchq = $_GET['keywords']; 
     $searchq = preg_replace("#[^a-z0-9]#i" , "", $searchq); 

     $query = "SELECT eventTitle FROM te_events WHERE eventTitle LIKE '%searchq%'"; 

     mysqli_query($conn, $query) 
     or die ("SQL error:" .mysqli_error($conn)); 


     $count = mysqli_num_rows($query); 

     if($count==0){ 
      echo "<p>There was no search result!</p>\n"; 
     } 

     else{ 
      while ($row = mysqli_fetch_array($query)){ 
       $title = $row['eventTitle']; 
       $id = $row['eventID']; 

       echo "<p>title</p>\n"; 
      } 
     } 
    } 
?> 

ist es irgendein Problem in meinem Code ???

+0

$ query ist eine Zeichenfolge. Sie müssen die Rückgabe von mysqli_query() verwenden – e4c5

+0

mysqli_query ($ conn, $ query) ändern Sie diese Zeile zu diesem ** $ Myresult = mysqli_query ($ conn, $ query) ** und verwenden ** $ Myresult ** dh das Ergebnis setze auf count num rows.ie $ count = mysqli_num_rows ($ Myresult); –

Antwort

1

2 Fehler im Code

  1. Verwenden '%$searchq%' statt '%searchq%'.

  2. Ersetzen Sie mysqli_query($conn, $query) durch $queryresult = mysqli_query($conn, $query) und verwenden Sie $queryresult für Anzahl und Ergebnis-Array.

Ersetzen Sie den Code mit diesem

<?php 
    include 'database_conn.php'; 

    //collect search title 
    if (isset($_GET['keywords'])){ 

     $searchq = $_GET['keywords']; 
     $searchq = preg_replace("#[^a-z0-9]#i" , "", $searchq); 

     $query = "SELECT eventTitle FROM te_events WHERE eventTitle LIKE '%$searchq%'"; 

     $queryresult = mysqli_query($conn, $query) 
     or die ("SQL error:" .mysqli_error($conn)); 


     $count = mysqli_num_rows($queryresult); 

     if($count==0){ 
      echo "<p>There was no search result!</p>\n"; 
     } 

     else{ 
      while ($row = mysqli_fetch_array($queryresult)){ 
       $title = $row['eventTitle']; 
       $id = $row['eventID']; 

       echo "<p>title</p>\n"; 
      } 
     } 
    } 
?> 
+0

Verwenden Sie '$ searchq' nicht in der Abfrage. Verwenden Sie [parametrisierte Abfragen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) und ['bind_param'] (http://php.net/manual/en/mysqli-stmt .bind-param.php). – tadman

Verwandte Themen