Hochkommas und andere Zeichen in der Datenbank...

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?
 
aber bei mir klappt das nicht.
Bitte genauer definieren. Hast du Fehlermeldungen? Wenn ja: WELCHE!
Wie sieht dein fertiges SQL-Script aus?


Wie würde das mit "mysql_real_escape_string()" aussehen oder ist es was anderes?
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:
/**
 * 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);
 
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!

:)
 
Zurück