无法使用 twig 和 php oop 动态更新或删除
Can't update or delete dynamically with twig and php oop
我正在学习 php 哎呀,我快要为这个疯狂了...
我想用我网站上的表格更新我的数据库。
我这样创建我的模型:
public function update(Post $post){
$q = $this->_db->prepare('UPDATE posts SET title = :title, featuredImg = :featuredImg, content = :content, author = :author, date = :date, header = :header WHERE id = :id');
$q->bindValue(':title', $post->title(), PDO::PARAM_STR );
$q->bindValue(':content', $post->content(), PDO::PARAM_STR );
$q->bindValue(':author', $post->author(), PDO::PARAM_STR );
$q->bindValue(':header', $post->header(), PDO::PARAM_STR );
$q->bindValue(':date', $post->date(), PDO::PARAM_STR );
$q->bindValue(':featuredImg', $post->featuredImg(), PDO::PARAM_STR);
$q->bindValue(':id', $post->id(), PDO::PARAM_INT);
$q->execute();
和我的方法:
public function updatePost(){
$manager = new PostsManager($this->db);
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$p = new Post([
'title' => $_POST['title'],
'header' => $_POST['header'],
'author' => $_POST['author'],
'date' => date("Y-m-d H:i:s"),
'content' => $_POST['content']
]);
$manager->update($p);
}
}
当我var_dump($p)
我的数据来自我的表单,但是当我用我的方法尝试时
$manager->update($p)
它说 null 所以我的数据库没有任何变化。
我没有使用 Doctrine 或其他 DBAL 层。
你能告诉我我做错了什么吗?我再说一遍,我正在学习。
非常感谢
编辑:
我不好,当我var_dump($p)
,我的id是null
,不好吧? :
$object(Post)[13]
private '_id' => null
private '_title' => string 'Spicy jalapeno enim flank laborum prosciutto' (length=44)
private '_content' => string 'Commodo shankle t-bone, pork loin occaecat ea andouille shoulder venison sausage chicken ... (length=1573)
private '_author' => string 'aaaaaaaaaaa' (length=11)
private '_date' => null
private '_header' => string 'Spicy jalapeno ...' (length=190)
private '_featuredImg' => null_
问题似乎不涉及您发布的代码的 表面 但是通过将您的 prepare()
语句放在 try -catch 块,您将能够查明它是否是您的 SQL 查询或 PHP 代码中的问题....
try {
//...
$q = $this->_db->prepare('UPDATE posts SET title = :title, featuredImg = :featuredImg, content = :content, author = :author, date = :date, header = :header WHERE id = :id');
//...
$q->execute();
} catch (Exception $e) {
echo "Problem happened: " . $e->getMessage()
}
这样你可以获得比 NULL 更多的响应。
您的添加功能是否适用于同一系统?
可以试试这个
public function updatePost() {
$manager = new PostsManager($this->db);
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$p = new Post($_POST);
$manager->update($p);
}
}
或者你的id是空的
只需将 ID 添加到我的 Post 对象中,一切就会恢复正常
$post = new Post([
'id' => $_POST['id'],
'title' => $_POST['title'],
'header' => $_POST['header'],
'author' => $_POST['author'],
'date' => date("Y-m-d H:i:s"),
'content' => $_POST['content'],
'featuredImg' => $image
]);
我正在学习 php 哎呀,我快要为这个疯狂了...
我想用我网站上的表格更新我的数据库。
我这样创建我的模型:
public function update(Post $post){
$q = $this->_db->prepare('UPDATE posts SET title = :title, featuredImg = :featuredImg, content = :content, author = :author, date = :date, header = :header WHERE id = :id');
$q->bindValue(':title', $post->title(), PDO::PARAM_STR );
$q->bindValue(':content', $post->content(), PDO::PARAM_STR );
$q->bindValue(':author', $post->author(), PDO::PARAM_STR );
$q->bindValue(':header', $post->header(), PDO::PARAM_STR );
$q->bindValue(':date', $post->date(), PDO::PARAM_STR );
$q->bindValue(':featuredImg', $post->featuredImg(), PDO::PARAM_STR);
$q->bindValue(':id', $post->id(), PDO::PARAM_INT);
$q->execute();
和我的方法:
public function updatePost(){
$manager = new PostsManager($this->db);
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$p = new Post([
'title' => $_POST['title'],
'header' => $_POST['header'],
'author' => $_POST['author'],
'date' => date("Y-m-d H:i:s"),
'content' => $_POST['content']
]);
$manager->update($p);
}
}
当我var_dump($p)
我的数据来自我的表单,但是当我用我的方法尝试时
$manager->update($p)
它说 null 所以我的数据库没有任何变化。
我没有使用 Doctrine 或其他 DBAL 层。
你能告诉我我做错了什么吗?我再说一遍,我正在学习。 非常感谢
编辑:
我不好,当我var_dump($p)
,我的id是null
,不好吧? :
$object(Post)[13]
private '_id' => null
private '_title' => string 'Spicy jalapeno enim flank laborum prosciutto' (length=44)
private '_content' => string 'Commodo shankle t-bone, pork loin occaecat ea andouille shoulder venison sausage chicken ... (length=1573)
private '_author' => string 'aaaaaaaaaaa' (length=11)
private '_date' => null
private '_header' => string 'Spicy jalapeno ...' (length=190)
private '_featuredImg' => null_
问题似乎不涉及您发布的代码的 表面 但是通过将您的 prepare()
语句放在 try -catch 块,您将能够查明它是否是您的 SQL 查询或 PHP 代码中的问题....
try {
//...
$q = $this->_db->prepare('UPDATE posts SET title = :title, featuredImg = :featuredImg, content = :content, author = :author, date = :date, header = :header WHERE id = :id');
//...
$q->execute();
} catch (Exception $e) {
echo "Problem happened: " . $e->getMessage()
}
这样你可以获得比 NULL 更多的响应。
您的添加功能是否适用于同一系统?
可以试试这个
public function updatePost() {
$manager = new PostsManager($this->db);
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$p = new Post($_POST);
$manager->update($p);
}
}
或者你的id是空的
只需将 ID 添加到我的 Post 对象中,一切就会恢复正常
$post = new Post([
'id' => $_POST['id'],
'title' => $_POST['title'],
'header' => $_POST['header'],
'author' => $_POST['author'],
'date' => date("Y-m-d H:i:s"),
'content' => $_POST['content'],
'featuredImg' => $image
]);