PHP MySQL - Prozentzeichen macht Probleme

staybb

Neuling
Thread Starter
Mitglied seit
28.11.2010
Beiträge
124
Hallo,

ich habe eine Seite in php geschrieben, bei der Werte über Formulare an eine MySQL Datenbank übermittelt werden.

Das Übermitteln der Daten aus den Formular Feldern in die MySQL DB funktioniert auch tadellos.

Nur habe ich folgendes Problem bei einem Vergleich von einem eingegeben Wert in einem Formular Feld und einem Wert der schon in der Datenbank steht:

PHP:
$sql_pruefen = "SELECT COUNT(*) AS anzahl_ausgebucht FROM einbuchung WHERE ean = $ean AND ausgebucht = 0";

$wert enthält folgendes aus dem Formular Feld:
%000606301799889397094101040

Das Problem ist das %-Zeichen. Es soll möglich sein über die Formular Seite zu prüfen ob dieser Wert schon in der Datenbank vorhanden ist und wenn ja, soll in dem Feld 'anzahl_ausgebucht' eine 1 geschrieben werden. Dies hat den Sinn, wenn ein eingegeben Wert in der Datenbank vorhanden ist, dieser als ausgebucht in der Datenbank markiert werden soll.

So sieht der Code-Abschnitt aus:
PHP:
          <?php
                    if($_POST["action"]=="ausbuchen"){ 
                    include("server_data.php");
    
                    $mitarbeiter = trim($_POST["mitarbeiter"]);
                    $ean = trim($_POST["ean"]);
					
					if (empty($_POST['mitarbeiter'])){
							echo 'Das Feld Mitarbeiter muss ausgefüllt sein!<br/>';  
					}
					
                    $sql_pruefen = "SELECT COUNT(*) AS anzahl_ausgebucht FROM einbuchung WHERE ean = `$ean` AND ausgebucht = 0";
                    $result = mysql_query($sql_pruefen);
                    $anzahl = mysql_fetch_array($result);
                        echo $anzahl['anzahl_ausgebucht'];
    
                    if ($anzahl['anzahl_ausgebucht'] == 1){
                        $sql_einfuegen = "INSERT INTO ausbuchung(mitarbeiter, ean)    VALUES('$mitarbeiter','$ean')";
                        mysql_query($sql_einfuegen) or die(mysql_error());
    
                        $sql_update = "UPDATE einbuchung SET ausgebucht = 1, zeitstempel_aus = now() WHERE ean = $ean";
                        mysql_query($sql_update) or die(mysql_error());
            
                        $var2 = 'Ausgebucht!';
                        echo "var2=".$var2;
                        }
                    else{
                        $var2 = 'Fehler';
                        echo "var2=".$var2;
                        }    
      }
?>

Sobald in dem Formular Feld ein Zahl mit dem % Zeichen eingegeben wird und auf den Button "Ausbuchen" geklickt wird springt er zu var2 Fehler.
Die Prozentzeichen sind in dem Feld immer vorhaden, sprich es werden immer Werte mit %123892139123 (Prozent-Zahl) eingegeben.

Wenn ich es ohne % eingebe und auch der gleich Wert ohne % in der DB vorhanden ist funktioniert es!

Was kann ich tun?

Ich habe es auch schon so in der Abfrage versucht:
PHP:
WHERE ean = '" . $ean . "' AND ausgebucht = 0";
Dann erhalte ich folgendes auf der Seite:
Code:
1You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%000606301799889397094101040' at line 1

An der MySQL version liegt es nicht es ist die 5.5.25a.

Habe auch schon eine andere version versucht.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh