nchristoph
Erfahrenes Mitglied
Hallo zusammen,
ich muss eine SQL Abfrage absichern.
Ich gebe in ein Formular eine Reihe von Zahlen ein, getrennt mittels Beistrich.
Der String wird dann beim Beistrich in einen Array aufgesplittet. Die einzelnen Arrayfelder werden mit einer Datenbank abgeglichen.
Aktuell sieht der Code so aus:
Wenn allerdings jetzt ein Sonderzeichen im String vorkommt, bekomme ich folgenden MySQL Fehler.
Ein Versuch, den das Feld $_POST['liste'] mittels trim oder preg_replace zu bereinigen, funktioniert nur bedingt, weil auch alle Sonderzeichen in der Mitte des Strings entfernt werden wodurch ich kein Ergebnis retourkriege.
Auch mittels RTRIM und LTRIM habe ich es versucht, leider kommt dabei wieder nur ein MySQL Fehler raus.
Kann mir von euch wer einen Rat geben?
ich muss eine SQL Abfrage absichern.
Ich gebe in ein Formular eine Reihe von Zahlen ein, getrennt mittels Beistrich.
Der String wird dann beim Beistrich in einen Array aufgesplittet. Die einzelnen Arrayfelder werden mit einer Datenbank abgeglichen.
Aktuell sieht der Code so aus:
PHP:
if( preg_match('/\d+ ?(, ?\d+)*/', $_POST['liste']) === 1 ){
$sql=(" SELECT
Pfad,
Partie
FROM
suchmaschine
WHERE
Partie IN (".$_POST['liste'].")");
$stmt = $db_conn->prepare($sql);
//$stmt->bindValue(':suchbegriff', "{$_POST['liste']}", PDO::PARAM_STR);
$stmt->execute();
if($stmt->rowCount()>=1) {
foreach($stmt->fetchAll() as $row) {
$partie[] = $row['Partie'];
}
}
}
Wenn allerdings jetzt ein Sonderzeichen im String vorkommt, bekomme ich folgenden MySQL Fehler.
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 7' in C:\xampp\suchmaschine\inc\sendmassmail.php:23 Stack trace: #0 C:\xampp\suchmaschine\inc\sendmassmail.php(23): PDOStatement->execute() #1 C:\xampp\suchmaschine\lib\content.lib.php(3): include('C:\\xampp\\suchma...') #2 C:\xampp\suchmaschine\index.php(123): include('C:\\xampp\\suchma...') #3 {main} thrown in C:\xampp\suchmaschine\inc\sendmassmail.php on line 23
Ein Versuch, den das Feld $_POST['liste'] mittels trim oder preg_replace zu bereinigen, funktioniert nur bedingt, weil auch alle Sonderzeichen in der Mitte des Strings entfernt werden wodurch ich kein Ergebnis retourkriege.
Auch mittels RTRIM und LTRIM habe ich es versucht, leider kommt dabei wieder nur ein MySQL Fehler raus.
Kann mir von euch wer einen Rat geben?