3Danke
ERLEDIGT
JA
JA
ANTWORTEN
13
13
ZUGRIFFE
274
274
EMPFEHLEN
-
Morgen Leute und nachträglich Frohe Weihnachten!

Meine Frage:
Ich habe eine Datebank erstellt mit "input Felder", die Kunden in einer Kundenliste sucht.
Jezt möchte ich einen Namen mit Hochkomma schreiben, aber MySQL kann die nicht verarbeiten?
Geht es mit "mysql_real_escape_string", wenn ja, wo ist es am besten einzufügen!
Danke!
-
Zeig doch mal wie du dein SQL aufbaust. Also ein bisschen Code...
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Also mein SQL sieht so aus:
Code :1 2 3 4 5 6 7 8 9 10 11
$db->query(" SELECT * FROM kundenliste WHERE vorname LIKE '%{$_REQUEST['suche_vorname']}%' AND nachname LIKE '%{$_REQUEST['suche_nachname']}%' AND strasse LIKE '%{$_REQUEST['suche_strasse']}%' AND hausnummer LIKE '%{$_REQUEST['suche_hausnummer']}%' AND postleitzahl LIKE '%{$_REQUEST['suche_postleitzahl']}%' AND stadt LIKE '%{$_REQUEST['suche_stadt']}%' ORDER BY vorname ASC, nachname ASC, strasse ASC, hausnummer ASC, postleitzahl ASC, stadt ASC LIMIT 100 ");
-
Und du willst also nach [Mü"ller] und [vom "Berg"] etc. suchen können? Oder wie meinst du das?
PS: mysql_real_escape_string() solltest du sowieso verwenden
PPS: Du solltest prüfen ob die Felder wirklich abgefüllt sind: [PHP] [MySQL] Einfacher SQL-Filter aus $_POST zusammenstellen---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Ja genau! Ich möchte das die Datenbank die Namen auch findet, wenn die mit Anführungszeichen geschrieben wurden!
-
Also nohcmals zum verstehen für mich.
Du Suchst nach [Mü"ller] weil [Mü"ller] in der DB steht oder
du suchst ["Müller"] weil der User die Anführungszeichen dazu geschrieben hat, aber eigentlich [Müller] sucht weil nur [Müller] aber nicht ["Müller"] in der DB steht?---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Ja das zweite habe ich gemeint.

Wenn jemand den Namen so engegeben hat ["Müller"], müssen trotzdem alle [Müller] angezeigt werden. In der Datenbank sind die Anführungszeichen nicht vorhanden!
-
Ah - so.
Das ist doch einfach. Mittels trim() in PHP einfach die " entfernen
Oder in MySQLPHP-Code:$string = trim($_POST['string'], '"');
Code sql:1 2 3
SELECT * FROM myTable WHERE string = TRIM(BOTH '"' FROM '"Müller"')
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Also irgendwie geht das nicht bei mir.
Kannst du dein Beipiel mit MySQL mit meinem Code verbinden, weiß nicht direkt wie ich das anwenden soll!
Danke!
-
Was, das ist doch nicht so schwer
Code sql:1 2 3 4
SELECT * FROM kundenliste WHERE vorname LIKE CONCAT('%', TRIM(BOTH '"' FROM '{$_REQUEST['suche_vorname']}'), '%' ) ....
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hmm, ist mir etwas peinlich, aber bei mir klappt das nicht.
Wie würde das mit "mysql_real_escape_string()" aussehen oder ist es was anderes?
-
Bitte genauer definieren. Hast du Fehlermeldungen? Wenn ja: WELCHE!
Wie sieht dein fertiges SQL-Script aus?
Das macht was anderes. Siehe dazu die Anleitung von PHP zu diesem Thema.
Achja, hab noch herausgefunden dass ev. der Wert mit \" anstelle von " übergeben wird. Alos noch mit stripcslashes() die \ entfernen
Am saubersten würde das ganze so aussehen
PHP-Code:/**
* Erstellt eine MySQL-WHERE-Anweisung mit LIKE und entfernten umgebenden "
* @param String Name des Feldes in der DB
* @param String Index-Name des Items in $_REQUEST
* @return String MySQL-WHERE Anweisung
*/
function getLikeWithoutQuotas($field, $requestIndex){
$item = mysql_real_escape_string(trim(stripcslashes($_REQUEST[$requestIndex]), '"'));
return "$field LIKE '%{$item}%'";
}
// Array initializieren. Falls kein argument angegeben wurde,
// dann ist die Argumentliste ein leeres Array
$wheres = array();
//Jedes Feld prüfen und ggf in den Where-Array einfügen
if(isset($_REQUEST['suche_vorname'])) $wheres[] = getLikeWithoutQuotas('vorname', 'suche_vorname');
if(isset($_REQUEST['suche_nachname'])) $wheres[] = getLikeWithoutQuotas('nachname', 'suche_nachname');
if(isset($_REQUEST['suche_strasse'])) $wheres[] = getLikeWithoutQuotas('strasse', 'suche_strasse');
if(isset($_REQUEST['suche_hausnummer'])) $wheres[] = getLikeWithoutQuotas('hausnummer', 'suche_hausnummer');
if(isset($_REQUEST['suche_postleitzahl'])) $wheres[] = getLikeWithoutQuotas('postleitzahl', 'suche_postleitzahl');
if(isset($_REQUEST['suche_stadt'])) $wheres[] = getLikeWithoutQuotas('stadt', 'suche_stadt');
// WHERE-Tel des SQL-String zusammenstellen
if(count($wheres)>0) $whereString = "WHERE ".implode(' AND ', $wheres);
//SQL-String zusammensetzen
$sql = <<<SQL
SELECT
*
FROM
kundenliste
{$whereString}
ORDER BY
vorname ASC,
nachname ASC,
strasse ASC,
hausnummer ASC,
postleitzahl ASC,
stadt ASC
LIMIT 100
SQL;
//FIXME: Zu Debug-Zwecken den SQL ausegeben. Sobld dieser gut aussieht, an die DB senden
var_dump($sql);
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
So es geht! Hab vergessen vor dem Anführungszeichen den Querstrich zu machen, also hier -->[ \" ].
Danke dir für deine Hilfe und auch Geduld!! Frohes neues Jahr!
-
27.12.11 23:02 #14
Für Programmierung sollte man immer etwas Ruhe und Geduld im Handgepäck haben
Ähnliche Themen
-
Rechte Tastaturhälfte defekt? Andere Zeichen?
Von bigfella im Forum Microsoft WindowsAntworten: 2Letzter Beitrag: 11.10.08, 19:14 -
[mysql] Newsletter-user aus Datenbank in eine andere Datenbank
Von Scofields im Forum Relationale DatenbanksystemeAntworten: 8Letzter Beitrag: 11.06.08, 21:20 -
Slashes und andere Zeichen entfernen
Von redheador im Forum PHPAntworten: 6Letzter Beitrag: 08.03.08, 13:50 -
zeichen in String an beliebiger Stelle einfügen ohne andere Zeichen zu überschreiben
Von Burny66 im Forum C/C++Antworten: 3Letzter Beitrag: 12.08.07, 22:52 -
%20 und viele andere Zeichen umwandeln
Von Kerwin im Forum PHPAntworten: 2Letzter Beitrag: 30.07.06, 14:20





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren