无法使用codeigniter在Mysql中插入数据

时间:2016-01-29 10:34:37

标签: php mysql database codeigniter

由于数据库错误1048,我无法将数据插入mysql。我已经搜索了近一周,但我找不到任何解决方案。请帮我。这是所有的东西......

controller users.php:

<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Users extends CI_Controller 
{
    function __construct()
    {
        parent::__construct();
        #$this->load->helper('url');
        $this->load->model('users_model');
    }

    public function index()
    {
        $data['user_list'] = $this->users_model->get_all_users();
        $this->load->view('show_users', $data);
    }

    public function add_form()
    {
        $this->load->view('insert');
    }

    public function insert_new_user()
    {
        $udata['Username'] = $this->input->post('name');
        $udata['Email-Id'] = $this->input->post('email');
        $udata['Address'] = $this->input->post('address');
        $udata['Mobile'] = $this->input->post('mobile');
        $res = $this->users_model->insert_users_to_db($udata);

        if($res)
        {
            header("location: http://localhost/crudcode/index.php/users_model/insert_users_to_db");
        }
        else
        {
            echo "Hello";
        }
    }

}

模型users_model.php:

<?php

class Users_model extends CI_Model 
{
    function __construct()
    {
        parent::__construct();
        $this->load->database();
    }

    public function get_all_users()
    {
        $query = $this->db->get('users');
        return $query->result();
    }

    public function insert_users_to_db($udata)
    {
        return $this->db->insert('users', $udata);
    }

    public function getById($id)
    {
        $query = $this->db->get_where('users',array('id'=>$id));
        return $query->row_array();
    }

}

?>

查看insert.php:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>CI Insert Form</title>
</head>
<body>
<form method="post" action="localhost/crudcode/index.php/users/insert_new_user">
<table width="400" border="0" cellpadding="5">

    <tr>
        <th width="213" align="right" scope="row">Enter your username</th>
        <td width="161"><input type="text" name="name" size="20" /></td>
    </tr>

    <tr>
        <th align="right" scope="row">Enter your email</th>
        <td><input type="text" name="email" size="20" /></td>
    </tr>

    <tr>
        <th align="right" scope="row">Enter your Mobile</th>
        <td><input type="text" name="mobile" size="20" /></td>
    </tr>

    <tr>
        <th align="right" scope="row">Enter Your Address</th>
        <td><textarea name="address" rows="5" cols="20"></textarea></td>
    </tr>

    <tr>
        <th align="right" scope="row">&nbsp;</th>
        <td><input type="submit" name="submit" value="Send" /></td>
    </tr>

</table>
</form>
</body>
</html>

Here is the error

6 个答案:

答案 0 :(得分:1)

您是否检查过表单中的数据是否已提交?喜欢

public function insert_new_user()
{
    print_r($this->input->post());
}

并检查您已传递用户模型和最后一个查询的数组。

public function insert_users_to_db($udata)
{
    $this->db->insert('users', $udata);
    print_r($udata);
    echo $this->db->last_query();    
}

答案 1 :(得分:1)

您可以尝试从

更改FORM操作
<form method="post" action="localhost/crudcode/index.php/users/insert_new_user"> 

TO

<form method="post" action="<?php echo base_url();?>index.php/users/insert_new_user" >

答案 2 :(得分:0)

我假设您没有提交空表格。 问题可能是发生了重定向,没有携带你的$ POST数据。

您是否尝试过将此作为操作(使用正确的尾随/):

.btn:after {
    font-family: 'FontAwesome';
    content: '\f044';
    padding-left: 5px;
    position: relative;
    font-size: 90%;
}

 .btn:after {
    font-family: 'FontAwesome';
    content: '\f044';
    padding-left: 5px;
    position: relative;
    top: 1px;
    font-size: 90%;
}

答案 3 :(得分:0)

您已拨打insert_user_to_db()两次。

首先:

$res = $this->users_model->insert_users_to_db($udata);

在此次通话中,您需要从$udata array.

发送值

然后用:

if($res)
{
    header("location: http://localhost/crudcode/index.php/users_model/insert_users_to_db");
}

并且此调用不包含任何参数,因此它可能在此调用中失败。

如果您排除第二个电话并且只是为了这样,会发生什么?

$res = $this->users_model->insert_users_to_db($udata);
echo print_r($res, true);

一般来说,您不应该/不应该重定向到模型。这些重定向应该由控制器处理。

答案 4 :(得分:0)

1)最好使用form_open()和form_close()。

2)检查要插入的数组。列名称应与assoc数组匹配。

答案 5 :(得分:-1)

我认为Email-Id是无效的字段名称。如果您已经指定了某个字段,则必须将其转义为:

`Email-Id`

或更准确地说:

$udata['`Email-Id`'] = $this->input->post('email');

虽然更好的解决方案是重命名字段,因为这甚至不是命名约定。要么只使用CamelCase,要么只使用underscore_names。短划线不是我所知道的任何语言的字段/变量名称的有效字符。