我有一个网页,用户可以'添加'一个职位或'更新'一个现有的。在下面的代码中,我的“add”函数可以很好地添加一篇新文章。但是,我的“更新”功能根本不起作用。它无法更新我数据库中的现有帖子。有人能帮我做错事吗?谢谢您!!
class ShareModel extends Model{
public function Index(){
$this->query('SELECT * FROM shares ORDER BY create_date DESC');
$rows = $this->resultSet();
return $rows;
}
public function add(){
// Sanitize POST
$post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
if($post['submit']){
if($post['title'] == '' || $post['body'] == '' || $post['link'] ==''){
Messages::setMsg('Please Fill In All Fields', 'error');
return;
}
// Insert into MySQL
$this->query('INSERT INTO shares (title, body, link, user_id) VALUES(:title, :body, :link, :user_id)');
$this->bind(':title', $post['title']);
$this->bind(':body', $post['body']);
$this->bind(':link', $post['link']);
$this->bind(':user_id', 1);
$this->execute();
// Verify
if($this->lastInsertId()){
// Redirect
header('Location: '.ROOT_URL.'shares');
}
}
return;
}
public function update(){
$post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
if($post['update']){
if($post['title'] == '' || $post['body'] == '' || $post['link'] ==''){
Messages::setMsg('Please Fill In All Fields', 'error');
return;
}
$title = $post['title'];
$body = $post['body'];
$link = $post['link'];
// Update MySQL
$this->query('UPDATE shares SET (title, body, link, user_id) VALUES(:title, :body, :link, :user_id) ' );
$this->bind(':title', $post['title']);
$this->bind(':body', $post['body']);
$this->bind(':link', $post['link']);
$this->bind(':user_id', 1);
$this->execute();
header('Location: '.ROOT_URL.'shares');
}
return;
}
}
2条答案
按热度按时间b4lqfgs41#
sql更新语法:
一般语法为:
要限制要更新的记录数,请附加where子句:
注意update语法中的where子句:where子句指定应该更新哪些记录。如果省略where子句,所有记录都将更新!
当更新一个表时,mysql update语句的完整语法是
或
使用mysql中另一个表的数据更新一个表时,update语句的语法是:
或
更新多个表时mysql update语句的语法为:
注意:将echo或var_dump()放到语句中,然后退出();那边的手术。之后,您将看到浏览器上的查询,然后复制该查询并放入sql部分,然后在那里执行查询。如果所有的操作都正确,那么就删除exit和echo,然后运行代码。希望这个解释能让你明白。否则,您可以使用echo$this->last_query()打印最后一个sql查询字符串;出口;
qal快乐编码:)
0h4hbjxa2#
您的更新语法已关闭。mysql的更新语法(也是大多数其他数据库使用的语法)是:
换言之,直接使用equals为每列指定一个更新值。尝试此版本:
编辑:大多数时候,你也会有一个
WHERE
子句,除非您确实要更新表中的每条记录。