Um SQL-Injektionen zu vermeiden, konvertiere ich meine Abfragen in vorbereitete Anweisungen. Ich habe noch eins. Es enthält auch einen möglichen Nullwert, daher erweist es sich als etwas schwierig.MySQL-Abfrage in vorbereitete Anweisung mit möglichem Nullwert konvertieren
Normal:
// Declare $dbc, $varA, $varB, $varC, $ID
$varC = ($varC == '-') ? "NULL" : "'" . $varC . "'";
$query = "UPDATE myTable ";
$query .= "SET VARA = '{$varA}', VARB = '{$varB}', VARC = $varC ";
$query .= "WHERE ID = '{$ID}'";
$result = @mysqli_query($dbc, $query) or die("Error updating record: " . mysqli_error($dbc));
Versuch vorbereitete Anweisung:
// Declare $dbc, $varA, $varB, $varC, $ID
$varC = ($varC == '-') ? "NULL" : "'" . $varC . "'";
$query = "UPDATE myTable ";
$query .= "SET VARA = ? VARB = ? VARC = ? ";
$query .= "WHERE ID = ?";
$stmt = mysqli_prepare($dbc, $query);
$bind = mysqli_stmt_bind_param($stmt, "ssss", $varA, $varB, $varC, $ID);
$exec = mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
Solange die Spalte null sein kann, sollte es kein Problem sein, Null einzufügen. Ich würde jedoch die Zeichenkette "NULL" nicht einsenden (NULL! == "NULL"), und Sie müssen den Parameter nicht wie dieses "" 'zitieren. $ varC. "'" '- senden Sie einfach' $ varC' – JimL
Ich habe es auch so versucht, aber die Abfrage scheint die DB nicht zu aktualisieren. – Ali