由于数据库错误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"> </th>
<td><input type="submit" name="submit" value="Send" /></td>
</tr>
</table>
</form>
</body>
</html>
答案 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。短划线不是我所知道的任何语言的字段/变量名称的有效字符。