我是codeigniter的新手并且遇到错误遇到PHP错误

时间:2015-05-22 14:45:59

标签: php codeigniter insert codeigniter-2

请帮助我的代码将数据插入数据库,并返回错误

  

遇到PHP错误严重性:通知消息:未定义   变量:computerName文件名:models / add_model.php行号:20

查看:

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

Branch: <input type="text" name="branch" /><br/>

Business Unit: <input type="text" name="buinessUnit" /><br/>
Device Type: <input type="text" name="deviceType" /><br/>
Brand: <input type="text" name="brand" /><br/>
Device Model: <input type="text" name="deviceModel" /><br/>
SN: <input type="text" name="SN" /><br/>
status: <input type="text" name="status" /><br/>
department: <input type="text" name="department" /><br/>
username: <input type="text" name="username" /><br/>
notes: <input type="textarea" name="notes" /><br/>
computername: <input type="text" name="computerName" /><br/>
Save:<input type="submit" name="save" />

</form>

模型:     

public function insert_into_db() { 

if(isset($_POST['save'])) {

$branch = $_POST['branch'];

$buinessUnit = $_POST['buinessUnit'];

$deviceType = $_POST['deviceType'];

$brand = $_POST['brand'];

$deviceModel=$_POST['deviceModel'];

$SN = $_POST['SN'];

$status = $_POST['status'];

$department = $_POST['department'];

$username = $_POST['username'];

$notes = $_POST['notes'];

$computerName = $_POST['computerName'];

}          

$this->db->query("INSERT INTO `hardware_assets`(`Branch`, `Business Unit`, `Device Type`, `Brand`, `Device Model`, `SN`, `Status`, `Departmant`, `UserName`, `Notes`, `Computer Name`)
VALUES ('$branch','$buinessUnit','$deviceType','$brand','$deviceModel','$SN','$status','$department','$username','$notes','$computerName')");
}

}

控制器:

<?php

class Speed extends CI_Controller {

public function view($page = 'home')
{

    // if ( ! file_exists(APPPATH.'/views/pages/'.$page.'.php'))
    // {
    // // Whoops, we don't have a page for that!
    // show_404();
    // }

    // $data['title'] = ucfirst($page); // Capitalize the first letter

    // $this->load->view('templates/header', $data);
    // $this->load->view('pages/'.$page, $data);
    // $this->load->view('templates/footer', $data);

    // }

    function insert_to_db(){
    $this->load->model('add_model');
    $this->add_model->insert_into_db();
    $this->load->view('pages/home');//loading success view
    }

}

2 个答案:

答案 0 :(得分:1)

您不能在名称中使用空格命名您的表格字段,例如Computer Name应为computerNamecomputer_name

  

ASCII:[0-9,a-z,A-Z $ _](基本拉丁字母,数字0-9,美元,   下划线)

Reference

答案 1 :(得分:1)

你的模型根本不行,$ this-&gt; db-&gt; query()在条件块之外,我猜你没有设置$ _POST ['save']时会出现这个错误,最好重写模型

所以将模型更改为此(我们使用查询构建器,这在大多数情况下是更好的做法)

function insert_into_db() {
$post = $this->input->post();
if (!isset($post['save']) return;
$data = ['Branch'=> $post['branch'], 'Business Unit'=>$post['buinessUnit'] and rest of it.....];
$this->db->insert('hardware_assets', $data);
return $this->db->insert_id(); // if using mysql

一些注释可以帮助您避免以后出现此类问题或提高安全性:

始终使用表单助手来创建表单

始终使用查询构建器进行模型,并确保正确验证数据

永远不要使用$ _POST,请使用$ this-&gt; input-&gt; post()代替

如果你想在一个字符串中使用一个变量,总是把变量放在{}中,即:echo“你在{$ place}”

永远不要为列名

使用空格

最好将属性匹配列名称命名为使您的代码更短,更快,更清晰并且没有错误(在这种情况下,您甚至不需要$ data,您可以直接使用$ post)