1
我想要做的就是創建一個準備好的語句,它將根據輸入的數組插入值,該數組將是動態的。動態的意思是通過包含一個額外的行(如下面的註釋掉的行)來更改數組0123'的能力,並且它正確發送並將值插入表中,而不管有多少行存在。因爲我的新用途準備好的發言的我不能用我以前的方法:如何使用動態數組運行MySQLi準備語句?
INSERT INTO table ($fields) VALUES ($data)
因爲這是不安全的,是開放的SQL注入。
$table = array();
$table['Favorite_Chocolate'] = 'Milk';
$table['Favorite_Cake'] = 'Vanilla';
$table['Favorite_IceCream'] = 'Neapolitan';
//$table['Favorite_Candy'] = 'Taffy';
function magic_insert ($table, $dbc) {
if ($stmt = mysqli_prepare($dbc, "INSERT INTO mytable (?, ?, ?) VALUES (?, ?, ?)")) {
mysqli_stmt_bind_param($stmt, "ssssss", $1, $2, $3, $4, $5, $6);
$1 = array_keys($table)[0];
$2 = array_keys($table)[1];
$3 = array_keys($table)[2];
$4 = array_values($table)[0];
$5 = array_values($table)[1];
$6 = array_values($table)[2];
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
}
}
fyi - 我不知道任何允許你綁定列名的數據庫。 MySQL肯定不會。 – goat
@rambocoder這只是一個簡單的示例腳本。我可能會直接輸入它,因爲$表鍵由代碼設置,而不是通過用戶輸入 – Darkaaja
您不能綁定列名,因此對於您的查詢,您可以綁定所需的值。如果您確實需要更改列名,您可以使用'mysqli_real_escape_string()'並通過串聯構造查詢來確保列名和值的安全。毫無疑問,學者們會抱怨這一點,但做得妥妥當,這是安全的。 – 2014-02-23 01:32:37