Auge: PHP: Hochkomma für MySQL/MariaDB maskieren?

Beitrag lesen

Hallo

Der Code:

  $stichwort = $_POST["stichwort"];
  $stichwort = mysqli_real_escape_string($db, $stichwort);
  $kategorie = $_POST["kategorie"];
  $kategorie = mysqli_real_escape_string($db, $kategorie);
  
  $sql1 = "SELECT nr, stichwort FROM STICHWOERTER WHERE stichwort = '".$_POST['stichwort']."'";

Mir wurde dabei natürlich klar, dass mysqli_real_escape_string() nur funktionieren kann, wenn ich statt $_POST['stichwort'] $stichwort verwende...

Dass du den unbehandelten POST-Wert statt des behandelten Werts in $stichwort benutzt hast, ist dir ja nun klar geworden. Mit …

$sql1 = "SELECT
 nr,
 stichwort
FROM STICHWOERTER
WHERE stichwort = '". mysqli_real_escape_string($db, $_POST['stichwort']) ."'";

… wäre das nicht passiert. Das ist natürlich nur dann sinnvoll, wenn du mit $stichwort nicht noch andere Dinge tust, die du hier nicht zeigst.

und damit handelte ich mir gleich den nächsten Error ein:

Fehler: Incorrect integer value: '' for column tagebuch_stichwoerter.STICHWORT_KATEGORIE.stichwoerter_nr at row 1

Das ist aber eine gänzlich andere Abfrage, oder? Und ja, ein Leerstring ist keine gültige Integer-Zahl.

Tschö, Auge

--
200 ist das neue 35.