sql enjeksiyonlarını engellemek için, sorgularımın hazırladığı ifadelere dönüştürüyorum. Bir tane kaldım. Olası bir boş değer de içerir, bu yüzden biraz zor olduğu kanıtlanır. NormalMySQL sorgusunu olası null değerine sahip hazır deyimine dönüştürün
: Hazırlanan deyimi de
// 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));
Denemesi:
// 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);
Sütun boş olabilir sürece null ekleme sorun olmamalıdır. Dize "NULL" (NULL! == "NULL") dizini göndermezdim ve bu "" "gibi param alıntı yapmak zorunda değilsiniz. $ varC. "'" '- sadece $ varC' – JimL
’u gönderdim. Bu şekilde denedim, ancak sorgu her iki şekilde de DB’yi güncellemiyor gibi görünüyor. – Ali