爲了防止sql注入,我將查詢轉換爲預準備語句。我剩下一個。它也包含一個可能的空值,因此證明有點困難。將MySQL查詢轉換爲可能的空值的預準備語句
正常:
// 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));
嘗試在事先準備好的聲明:
// 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);
只要列可以爲null,插入null應該沒有問題。我不會發送字符串「NULL」,雖然(NULL!==「NULL」),你不必引用這樣的參數'「'」。 $ varC。 「'」' - 只需發送'$ varC' – JimL
我也嘗試過這種方式,但查詢似乎無法以任何方式更新數據庫。 – Ali