PHP Suchfunktion mit MySQL
Ich habe den folgenden code -
<?php # search.inc
error_reporting(E_ALL); //
ini_set('display_errors', '1');
include "connect_to_mysql.php";
?>
<?php # search.inc.php
//header file:
include_once ('./includes/header.inc');
?>
<?php
$terms= $_GET['terms'];
echo "You've searched for: " . $terms;
$sql= "SELECT * FROM products WHERE product_name ='Big Tree'";
//-run the query against the mysql query function
$result=mysql_query($sql);
while ($row = mysql_fetch_array($result)) { //While there are products that match the search criteria, assign their data to a variable and echo their details on a webpage
$id = $row["id"];
$product_name = $row["product_name"];
$price = $row["price"];
$details = $row["details"];
$category = $row["category"];
echo '<br/> <img name="image" src="inventory_images/' . $row['id'] . '.jpg" width="100" height="150"/>';
echo '<br/>';
echo '<br/> Product Name: '.$row['product_name'];
echo '<br/>';
echo '<br/> <a href="modules/productsdetails.inc.php?id=' . $id . '">Click Here To View Product Page</a>';
echo '<br/>';
echo '<br/>';
}
mysql_close(); //closes the MySQL connection.
?>
<?php
//Include footer file
include_once ('./includes/footer.inc');
?>
Wie Sie sehen können - ich habe hart codiert, um die Suche nach "Big Tree". Meine Frage ist - Wie kann ich den code, um die Suche für die Benutzer-Eingabe.
Habe ich versucht, %$terms%, aber es werden keine Ergebnisse gedruckt.
- Du meinst
%$terms%
, richtig? Sicherlich würden Sie nicht schreiben Sie einfach das Wortterms
in einen string und erwarten, dass es wissen, Sie wollte, um zu injizieren, eine variable... Vorausgesetzt, Sie hat, Sie müssen verwenden Sie dieLIKE
- operator anstelle von=
. Dann werden Sie brauchen, um über SQL-injection. Dann müssen Sie überlegen, dass Sie vielleicht brauchen, um zu kombinieren Sie mehrere Begriffe mitOR
. - Ja - Mein bad, gemeint war %$terms%. Ich werde das original Bearbeiten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie verketten in der Abfrage die variable, die Sie suchen möchten
oder
echo $sql;
die Zeile nach der Abfrage, führen Sie die Abfrage direkt in der DB, haben Sie kein Ergebnis oder Fehler gibt es?SELECT * FROM products WHERE product_name LIKE'%Big Tree%'
?Verwenden:
Keine Notwendigkeit zu verketten.
Wenn Sie die innodb-engine auf mysql 5.5 oder unten, müssen Sie die " WIE " - wie so:
Wenn du auf mysql 5.6 oder wenn Sie eine myisam-Tabelle, die Sie verwenden können, MATCH GEGEN wenn Sie einen fulltext-index auf die Spalte, die Sie suchen.
Bitte schauen Sie in parametrisierten Abfragen oder zumindest verwenden mysql_real_escape_string zu bereinigen Ihre Variablen.
Ich habe eine Funktion für mysql Parsen von strings mit Prozentsatz Sortieren. Sie können es verwenden, wenn Sie möchten.
Es kann fast jede Kombination, die Sie suchen.
Installieren
Zuerst müssen Sie erstellen eine Funktion in mysql. Hier ist der code für, die.
Ich habe es in phpmyadmin
Nun können Sie diese Funktion verwenden, wenn Sie eine mysql-Aufruf von php wie dieses.