MySQL pdo prepare execute ->update

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

king-ich

Mitglied
Hallo.
Ich habe folgenden Code:
SQL:
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$address_street = $_POST['option_selection1'];
$name = $_POST["option_selection2"];
$zip = $_POST["option_selection3"];
$city = $_POST["option_selection4"];
$bezahlt = 'true';
$invoice = $_POST['invoice'];

$sql = "UPDATE warenkorb SET vorname = ?, nachname = ?, strasse = ?,
name = ?, plz = ?, ort = ?, bezahlt = ? WHERE id = '{$invoice}'";
$statement = $pdo->prepare($sql);
$statement->execute(array($first_name, $last_name, $address_street,
                          $name, $zip, $city, $bezahlt));

Die $_POST Variablen kommen von PayPal.

Ich bekomme eine Fehlermeldung wenn Ich in einem PayPal vorangehenden Formular in das Strasse Input ($_POST['option_selection1']) meine mit - geschriebene Strasse eintrage: [14-May-2019 15:10:38 UTC] PHP Fatal error: Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: '\xDFe 60' for column `domain_de`.`warenkorb`.`strasse` at row 1 in /customers/b/3/2/domain.de/httpd.www/action.php:20 Stack trace: #0 /customers/b/3/2/domain.de/httpd.www/action.php(20): PDOStatement->execute(Array) #1 {main} thrown in /customers/b/3/2/domain.de/httpd.www/action.php on line 20

Wenn ich allerdings einen Strassenname ohne Sonderzeichen eingebe, funktioniert der Eintrag in die Datenbank.

Kann jemand helfen?
 
Zuletzt bearbeitet:
Zeig doch mal die Tabellendefinition. Spezifisch das Feld warenkorb.strasse. Ist das auch brav ein Varchar?
Und lass dir $_POST mal mir var_dump() ausgeben.
 
SQL:
CREATE TABLE `warenkorb` (
  `id` int(11) NOT NULL,
  `array` text COLLATE utf8_bin DEFAULT NULL,
  `vorname` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `nachname` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `strasse` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `plz` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `ort` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `email` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `bezahlt` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `bezahlt am` datetime NOT NULL,
  `verschickt` varchar(255) CHARACTER SET utf32 COLLATE utf32_bin DEFAULT NULL,
  `verschickt am` datetime NOT NULL,
  `sendungsnummer` varchar(255) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

["on0"]=> string(6) "Srasse" ["os0"]=> string(26) "Max-Mustermann-Straße 123"
 
Code:
["on0"]=> string(6) "Srasse" ["os0"]=> string(26) "Max-Mustermann-Straße 123"
Da ist kein $_POST['option_selection1']; drin
 
["on0"]=> string(6) "Srasse" ["os0"]=> string(26) "Max-Mustermann-Straße 123"

Kommt von action.php ohne Paypal dazwischen
 
Errr? Sieht ausser mir niemand "Srasse" (String 6) anstatt "Strasse" (String 7 - Fehlendes "t")?
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück