2013-05-26 20 views
6

mit meiner Web-Design-Zuordnung zu kämpfen ist. Ich habe ein Tutorial verfolgt, um eine Suchfunktion für meine Website hinzuzufügen, aber ich habe die folgende Fehlermeldung erhalten:Warnung: mysqli_num_rows() erwartet, dass Parameter 1 mysqli_result, boolean in

Warnung: mysqli_num_rows() erwartet Parameter 1 zu sein mysqli_result, boolean gegeben in/search.php 31 auf der Leitung 31

Linie ist (oder war)

<pre>if(mysqli_num_rows($results) >= 1)</pre> 

dass der ursprüngliche Fehler war.

<pre> 



    <?php 

//capture search term and remove spaces at its both ends if the is any 
$searchTerm = trim($_GET['keyword']); 

//check whether the name parsed is empty 
if($searchTerm == "") 
{ 
    echo "Enter the name/brand of what you're looking for."; 
    exit(); 
} 

//database connection info 
$host = "localhost"; 
$db_name = "sookehhh_shopsy_db"; 
$username = "sookehhh_shopsy"; 
$password = "xxxx"; 



//connecting to server and creating link to database 
$link = mysqli_connect($host, $username, $password, $db_name) or die('Could not connect: ' . mysqli_connect_error()); 

//MYSQL search statement 
$query = "SELECT * FROM sookehhh_shopsy_db WHERE name LIKE '%" . mysqli_real_escape_string($link, $searchTerm) . "%'"; 

// original query$query = "SELECT * FROM sookehhh_shopsy_db WHERE name LIKE '%$searchTerm%'"; 

$results = mysqli_query($link, $query); 

//added suggestion below - not sure if correct place? 
if (!$result) { 
    die(mysqli_error($link)); 
} 

/* check whethere there were matching records in the table 
by counting the number of results returned */ 
if(mysqli_num_rows($results) >= 1) 
{ 
    $output = ""; 
    while($row = mysqli_fetch_array($results)) 
    { 
     $output .= "Product Name: " . $row['name'] . "<br />"; 
     $output .= "Price: " . $row['price'] . "<br />"; 
    } 
    echo $output; 
} 
else 
    echo "There was no matching record for that item " . $searchTerm; 
?> 
</pre> 

gemacht notwendigen Änderungen und erneut aktualisiert -

jetzt die einzige Fehlermeldung ich hier bekommen ist „Table‚sookehhh_shopsy_db: gemäß den Anweisungen in den Kommentaren, ich habe den Code seit überarbeitet. sookehhh_shopsy_db 'existiert nicht "

Ich gehe davon aus, dass ich den Benutzernamen ändern muss, vielleicht weil er zu ähnlich ist?

Anywho, vielen Dank für Ihre Hilfe, und ich entschuldige mich für meine völlige Ignoranz.

Ich habe versucht, mich selbst zu unterrichten, aber leider ist die Zeit ein Luxus, den ich gerade nicht habe.

+0

'$ db_name =" shopsy_db; '<- verpasst ein schließendes Zitat –

+3

Hrm. Welche verwandte Frage, um dies zu schließen. Entscheidungen, Entscheidungen ... –

+1

Sie verwenden auch shopsy_db als db und Tabellenname. ist das in der Tat der Fall ... wenn es zum Fetch vor dem Kotzen macht es bedeutet, dass die Abfrage gebacken wird. Möglicher falscher Tabellenname? – Orangepill

Antwort

15

Das Problem ist Ihre Abfrage zurückgegeben false was bedeutet, dass ein Fehler in Ihrer Abfrage war. Nach Ihrer Anfrage können Sie wie folgt vorgehen:

if (!$result) { 
    die(mysqli_error($link)); 
} 

Oder Sie es mit Ihren Abfrage kombinieren könnte:

$results = mysqli_query($link, $query) or die(mysqli_error($link)); 

Das Ihren Fehler ausdrucken.

Auch ... müssen Sie Ihre Eingaben bereinigen. Sie können nicht einfach Benutzereingaben nehmen und diese in eine Abfrage einfügen. Versuchen Sie folgendes:

$query = "SELECT * FROM shopsy_db WHERE name LIKE '%" . mysqli_real_escape_string($link, $searchTerm) . "%'"; 

In Antwort auf: Table 'sookehhh_shopsy_db.sookehhh_shopsy_db' existiert nicht

Sind Sie sicher, dass der Tabellenname ist sookehhh_shopsy_db? Vielleicht ist es wirklich wie Benutzer oder etwas.

+0

Vielen Dank für die hilfreichen Informationen, leider bekomme ich immer noch eine Fehlermeldung. Bitte lesen Sie die überarbeitete Post für Details. – Chrissy

+0

Sorry, das ist meine schlechte. Ich habe meine mysqli_real_escape_string Funktion aktualisiert – chrislondon

+0

Es muss mysqli_real_escape_string ($ link , $ searchTerm) – chrislondon

Verwandte Themen