gpt4 book ai didi

php - 在 codeigniter 中插入值没有显示错误

转载 作者:行者123 更新时间:2023-11-29 22:58:57 25 4
gpt4 key购买 nike

我正在尝试使用 codeigniter 向数据库插入一行。
模型-post.php

class Post extends CI_Model{
function get_posts($num=20, $start=0){
$this->db->select()->from('posts')->where('active',1)->order_by('date_added','desc')->limit($num,$start);
$query=$this->db->get();
return $query->result_array();
}

function get_post($postid){
$this->db->select()->from('posts')->where(array('active' => 1, 'postID'=>$postid))->order_by('date_added','desc');
$query=$this->db->get();
return $query->first_row('array');

}

function insert_post($data){
$this->db->insert('posts',$data);
return $this->db->return_id();
}

Controller -posts.php

class Posts extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->model('post');
}
function index(){
$data['posts'] = $this->post->get_posts();
$this->load->view('post_index', $data);
}

function post($postid){
$data['post']=$this->post->get_post($postid);
$this->load->view('post',$data);
}

function new_post(){
if($_POST){
$data =array(
'title'=>$_POST['title'],
'post'=>$_POST['post'],
'active'=>1
);
$this->post->insert_post($data);
redirect(base_url());
}
else{
$this->load->view('new_post');
}
}

查看-new_post.php

<form action="<?php base_url(); ?>posts/new_post" method="action">
<p>Title: <input type="text" name="title"></p>
<p>Description: <input type="textarea" name="post"></p>
<input type="submit" value="Add post">
</form>

索引 View -post_index.php

foreach ($posts as $post) { ?>
<div id-="container">
<div><h3><a href="<?php base_url(); ?>post/<?php echo $post['postID']; ?>"><?php echo $post['title']; ?> </a></h3>
<?php echo $post['post']; ?>
</div>
</div>
<?php
}

索引页显示了 db 的所有帖子。单击标题后,将进入 post.php View 以显示相应的数据。这部分很好。
当尝试在 new_post.php 中添加新帖子时,它没有反射(reflect)在数据库中,也没有显示任何错误。
我还使用redirect_url在插入后重定向到索引页。所以它显示相同的可用帖子。单击标题后,它会不断向网址重复添加 posts/post
重定向网址后单击标题一次即可显示

http://localhost/Codeigniter/posts/posts/post/1

再次单击它添加的标题

http://localhost/Codeigniter/posts/posts/post/post/1

有人可以帮助我吗?谢谢!

最佳答案

整个应用程序存在许多问题。这些是我发现的:

<小时/>

观看次数

new_post View 中存在两个问题。

  1. 您没有回显您的 base_url 。您需要替换表单的操作属性。

  2. method 属性应具有 postget。在这种情况下,它应该是 post

像这样改变它:

从此:

<form action="<?php base_url(); ?>posts/new_post" method="action">

对此:

<form action="<?= base_url(); ?>posts/new_post" method="post">

或者您可以这样做:

<form action="<?php echo base_url(); ?>posts/new_post" method="post">
<小时/>

Controller

在您的 posts Controller 中,您的 new_post() 函数应如下所示:

function new_post() {
if ($this->input->post()) {
$data = array(
'title' => $this->input->post('title'),
'post' => $this->input->post('post'),
'active' => 1
);
$id = $this->post->insert_post($data);// this is the id return by your model.. dont know what you wann do with it
// maybe some conditionals checking if the $id is valid
redirect(base_url());
} else {
$this->load->view('new_post');
}
}
<小时/>

型号

函数 insert_post() 不应该有 $this->db->return_id();,而应该是 $this->db-> insert_id();

关于php - 在 codeigniter 中插入值没有显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28595412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com