CwStrange
CwStrange

Reputation: 35

Search results show but I also get and error

I have created a search for which displays the results, however in addition I also get this error:

( ! ) Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, string given on line 267

The line in question contains this:

while ($row = mysqli_fetch_array($query)) {

The below is the script after form posted:

<?php   

//Search Members
if(isset($_POST["SearchMembersSubmit"])) { 

    $search = mysqli_real_escape_string($connect,$_POST['SearchMembers']);
    $search = preg_replace("#[^0-9a-z]i#","", $search);
	
    //Check Form is not blank
	if (empty($search)){
	    require ("functions/FileName.php");
		$msg = "<div class=\"alert alert-danger\">Please enter a search criteria</div>";

	}
	else {
		
	require ("functions/connect.php");
		
    $query = mysqli_query($connect,"SELECT RegUsername, RegFirstName, RegLastName, RegEmail FROM registered WHERE 
	RegUsername LIKE '%".$search."%'
	OR 
	RegFirstName LIKE '%".$search."%'
	OR 
	RegLastName LIKE '%".$search."%'
	OR 
	RegEmail LIKE '%".$search."%'") or die ("There was no search results!");
	$count = mysqli_num_rows($query);
	
    
    if($count == 0){
	 require ("functions/FileName.php");
	 $msg = "<div class=\"alert alert-danger\">There was no search results</div>";


    }else{
      
      while ($row = mysqli_fetch_array($query)) {
	   require ("functions/connect.php");
	   require ("functions/FileName.php");
	   
        $RegUsername = $row ['RegUsername'];
        $RegFirstName = $row ['RegFirstName'];
        $RegLastName = $row ['RegLastName'];
        $RegEmail = $row ['RegEmail'];
	      
		//The layout and what will be shown on page
        $msg .='<p><b>User:</b> '.$RegUsername.
		'<br><b>First Name:</b> '.$RegFirstName.
		'<br><b>Last Name:</b> '.$RegLastName.
		'<br><b>Email:</b> '.$RegEmail.
		'</p>
		<hr>';

      }

    }
  }
 }
?>

Upvotes: 0

Views: 38

Answers (1)

Death-is-the-real-truth
Death-is-the-real-truth

Reputation: 72299

The main problem is require ("functions/connect.php");

You are again and again calling connect.php which is not necessary.

Add it one time on top after starting <?php and you will be good to go

Code need to be:-

<?php   
require ("functions/connect.php"); //add files here
require ("functions/FileName.php"); //add files here

if(isset($_POST["SearchMembersSubmit"])) { 

    $search = mysqli_real_escape_string($connect,$_POST['SearchMembers']);
    $search = preg_replace("#[^0-9a-z]i#","", $search);

    //Check Form is not blank
    if (empty($search)){
        $msg = "<div class=\"alert alert-danger\">Please enter a search criteria</div>";

    }else {
        $query = mysqli_query($connect,"SELECT RegUsername, RegFirstName, RegLastName, RegEmail FROM registered WHERE 
        RegUsername LIKE '%".$search."%'
        OR 
        RegFirstName LIKE '%".$search."%'
        OR 
        RegLastName LIKE '%".$search."%'
        OR 
        RegEmail LIKE '%".$search."%'") or die ("There was no search results!");
        $count = mysqli_num_rows($query);

        if($count == 0){

         $msg = "<div class=\"alert alert-danger\">There was no search results</div>";

        }else{

            while ($row = mysqli_fetch_array($query)) {

                $RegUsername = $row ['RegUsername'];
                $RegFirstName = $row ['RegFirstName'];
                $RegLastName = $row ['RegLastName'];
                $RegEmail = $row ['RegEmail'];

                //The layout and what will be shown on page
                $msg .='<p><b>User:</b> '.$RegUsername.
                '<br><b>First Name:</b> '.$RegFirstName.
                '<br><b>Last Name:</b> '.$RegLastName.
                '<br><b>Email:</b> '.$RegEmail.
                '</p>
                <hr>';
            }
        }
    }
 }
?>

Upvotes: 1

Related Questions