我正在尝试通过带有PDO的管理页面更新用户帐户。我可以使用以下
手动更新它$userInsert = DB::getInstance()->update('quotes', 245, array('firstname' => 'Helen'));
但我希望通过$ _GET方法来实现。这是我认为正确的
<?php
if(Input::exists()) {
if(Token::check(Input::get('token'))) {
$userInsert = DB::getInstance()->update('quotes', Input::get('id'), array(
'firstname', '=', escape(Input::get('firstname')),
'lastname', '=', escape(Input::get('lastname')),
'email', '=', escape(Input::get('email')),
'alt_email', '=', escape(Input::get('alt_email')),
'phone', '=', escape(Input::get('phone')),
'mobile', '=', escape(Input::get('mobile')),
'company_name', '=', escape(Input::get('company_name')),
'ticker', '=', escape(Input::get('ticker')),
'shares_held', '=', escape(Input::get('shares_held')),
'shares_sell', '=', escape(Input::get('shares_sell')),
'comments', '=', escape(Input::get('comments'))
));
Session::flash('success', '<pre class="pre-success">Client Account Updated Successfully</pre>');
Redirect::to('admin.php');
}
}
这是我的输入类
的副本<?php
class Input {
public static function exists($type = 'post') {
switch($type) {
case 'post':
return (!empty($_POST)) ? true : false;
break;
case 'get':
return (!empty($_GET)) ? true: false;
break;
default:
return false;
break;
}
}
public static function get($item) {
if(isset($_POST[$item])) {
return $_POST[$item];
} else if (isset($_GET[$item])) {
return $_GET[$item];
}
return '';
}
}
我似乎无法让它更新数据库,我没有收到任何错误,并且会重定向并显示成功消息。
************ EDIT *******************
很抱歉,现在包含了更新功能
public function update($table, $id, $fields = array()) {
$set = '';
$x = 1;
foreach($fields as $name => $value) {
$set .= "{$name} = ?";
if($x < count($fields)) {
$set .= ', ';
}
$x++;
}
$sql = "UPDATE {$table} SET {$set} WHERE id = {$id}";
if(!$this->query($sql, $fields)->error()) {
return true;
}
return false;
}