我已經做了這個動態更新函數,基於獲取函數,(相同的方法,只是另一個數組的SET)。PHP動態更新函數錯誤?
但它看起來像它有一個錯誤。
public function update($table, $columns = array(), array $criteria = null)
{
// The query base
$query = "UPDATE $table";
$query .= ' SET ' . implode(', ', array_map(function($column) {
return "$column = ?";
}, array_keys($columns)));
// Start checking
if ($criteria) {
$query .= ' WHERE ' . implode(' AND ', array_map(function($column) {
return "$column = ?";
}, array_keys($criteria)));
}
$update = $this->pdo->prepare($query) or die('An error has occurred with the following message:' . $query);
$update->execute(array_values($criteria));
}
,這是錯誤我收到(行179 =`$最新情況:>執行(array_values($列,$標準));):
有什麼不對呢?爲什麼我得到那個錯誤?
編輯新的錯誤:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in C:\xampp\htdocs\argonite\includes\class\MYSQL\Database.class.php:179 Stack trace: #0 C:\xampp\htdocs\argonite\includes\class\MYSQL\Database.class.php(179): PDOStatement->execute(Array) #1 C:\xampp\htdocs\argonite\index.php(8): Database->update('argonite_server...', Array, Array) #2 {main} thrown in C:\xampp\htdocs\argonite\includes\class\MYSQL\Database.class.php on line 179
array_values()期望的是1個參數,2給出 –
php.net/manual/en/function.array-values.php – insanebits
這個功能是脆弱的到sql注入 –