2017-01-27 1 views
1

Ich habe eine Datenbank mit nur einer Tabelle, die etwa 2 Millionen Zeilen und 60 Spalten hat. Ich habe eine PHP-Anwendung mit mehreren Suchfiltern wie Name, Land, Bundesland, Nachname, Domäne usw. erstellt, die das Ergebnis filtern und in der HTML-Tabelle anzeigen.Wie durchsucht man eine mysql db-Spalte mit mehreren Stichwörtern in einem einzelnen Textfeld, getrennt durch Kommas?

Aber das Problem ist, jedes Textfeld akzeptiert nur eine Eingabe. Ich möchte in jedem Textfeld mehrere Eingaben durch Kommata getrennt machen.

ZB: Wenn ich suche nach Name: Harry Job: Marketing Ich bekomme die Ergebnisse. Aber Ich möchte eine Lösung für Stadt: Mumbai Job: Marketing, Webdesigners, QA. (Mehrere Eingänge)

Screenshot

Code:

Php/Mysql-Abfrage-Code

<?php 
$res = false; 

if(isset($_REQUEST['submit'])){ 
    $FirstName=$_POST['FirstName']; 
    $LastName=$_POST['LastName']; 
    $Function=$_POST['Function']; 
    $State=$_POST['State']; 
    $Country =$_POST['Country']; 
    $Website =$_POST['Website']; 
    $sql=" SELECT * FROM hz WHERE FirstName like '%".$FirstName."%' AND LastName LIKE '%".$LastName."%' AND Function LIKE '%".$Function."%' AND State LIKE '%".$State."%' AND Country LIKE '%".$Country."%' AND Website LIKE '%".$Website."%'"; 
    $q=mysqli_query($con, $sql); 
} 
else{ 
    $res = true; 
} 
?> 

PHP Search Form:

<form method="post" class="search"> 
<table width="200"> 
<td> 
    <tr><input class="form__input" type="search" name="FirstName" placeholder="First Name" value="<?php if(isset($FirstName)) echo $FirstName;?>" /></tr> 
    <tr><input class="form__input" type="search" name="LastName" placeholder="Last name" value="<?php if(isset($LastName)) echo $LastName;?>" /></tr><BR> 
    <tr><input class="form__input" type="search" name="Function" placeholder="Function" value="<?php if(isset($Function)) echo $Function;?>" /></tr><BR> 
    <tr><input class="form__input" type="search" name="State" placeholder="State" value="<?php if(isset($State)) echo $State;?>" /></tr><BR> 
    <tr><input class="form__input" type="search" name="Country" placeholder="Country" value="<?php if(isset($Country)) echo $Country;?>" /></tr><BR> 
    <tr><input class="form__input" type="search" name="Website" placeholder="Website" value="<?php if(isset($Website)) echo $Website;?>" /></tr><BR>  
    <tr><input type="submit" name="submit" value=" Search " class="button"/></tr> 
</td> 
</table> 

PS:

$con = mysqli_connect("host","user","password", "databasename"); 

Ich habe Vorschläge wie die Verwendung explodieren Funktionen, foreach usw., aber keine Ahnung, wie es in diesem Code zu implementieren. Was soll ich tun?

+0

Haben Sie in den Handbüchern gesucht [ 'explode()'] (http: // PHP. net/manual/de/function.explode.php) und ['foreach()'] (http://php.net/manual/en/control-structures.foreach.php)? Sie sind ziemlich geradlinig. Lesen Sie sie und versuchen Sie es. –

+0

Während Sie dabei sind, sollten Sie auch über ['Prepared Statements'] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) lesen, da Ihr aktueller Code weit offen ist [SQL injection attacks] (https://en.wikipedia.org/wiki/SQL_injection), das ist schlecht, sehr sehr schlecht. –

+0

Ist es? Verdammt, das ist mein erstes PHP Projekt und ich bin scheiße! – user3382310

Antwort

Verwandte Themen