[MySQL] INSERT über mysqli schreibt single-quote maskiert in die Datenbank

Danny125

Grünschnabel
Guten Morgen,

ich habe ein Problem mit mysqli, und zwar tätige ich über folgendes Script einen INSERT Befehl:

PHP:
<?php
  $sql = "INSERT INTO items (aa, bb, cc) VALUES (?, ?, ?);";
  $result = $db->prepare($sql);
  $result->bind_param('sss', $value_a, $value_b, $value_c);
  $result->execute();
  if ($result->affected_rows == 1) echo "Success";
?>

Das Problem ist nun, dass in der Datenbank dann sämtliche Single Quotes > ' < maskiert sind, also statt ' steht \' im Feld. Ich rufe absichtlich nirgends eine escape funktion auf da ich gelernt habe, dass das beim prepare befehl alles automatisch geregelt wird.
 
was gibt ein var_dump($value_a, $value_b, $value_c) aus?

Hab mal einen kleinen Test gemacht
PHP:
$sql = "INSERT INTO test (test) VALUES (?);";
$stmt = $db->prepare($sql);

$test = "h'llo";
$stmt->bind_param('s', $test);
$stmt->execute();
//Fügt h'llo ein

$test = 'h\'llo';
$stmt->bind_param('s', $test);
$stmt->execute();
//Fügt h'llo ein

$test = "h\'llo";
$stmt->bind_param('s', $test);
$stmt->execute();
//Fügt h\'llo ein
 
Hi,

genau da lag der Fehler, denn var_dump gibt die Zeichen auch maskiert aus..

PHP:
string(10) "Test\'test" string(14) "second Ha\'llo"

Es lag daran dass ich die POST daten direkt reingeschrieben habe, ein stripslashes() hat Abhilfe geschafft. Sorry für diese Dummheit und danke für die Denkhilfe. :)
 
Zuletzt bearbeitet:
Zurück