我在CodeIgniter上做得很好。我可以在我的MySQL数据库上执行SELECT语句,完全没有问题。但是,现在我正在尝试执行INSERT语句。
请注意,我还没有尝试过UPDATE语句。
阅读完文档后,我很困惑。
这就是我所拥有的:
contacts.php:
function add() {
//echo "<pre>";print_r($_POST);
$this->load->model('Contacts_model');
$this->Contacts_model->insertContact($_POST);
}
contacts_model.php:
function insertContact($_POST) {
//echo "<pre>";print_r($_POST);
$title = $_POST['title']; // I can echo this here. It works
$f_name = $_POST['f_name']; // I can echo this here. It works
$sql = "INSERT INTO contacts (title,f_name) " .
"VALUES (" .
$this->db->escape($title) .
"," .
$this->db->escape($f_name) .
")";
$this->$db->query($sql);
}
我读过有关Active Record的内容,但是如果这让我感到困扰,那么我仍然没有意识到我做错了什么。所有的例子看起来都像我的。
帮助?
修改
$sql = "INSERT INTO contacts (title,f_name) VALUES ('$this->db->escape($title)','$this->db->escape($f_name)'";
$this->$db->query($sql);
我也是这样试过的。还有很多其他的变种。它似乎不是我的语法......我想。
答案 0 :(得分:4)
您的查询很好,只是为什么查询没有被执行的原因是您正在使用它:
$this->$db->query($sql);
没有像$ db这样的东西,只需使用它:
$this->db->query($sql);
我确定这是问题,但如果不是,那么请将错误发布给它。感谢。
希望这有帮助。
答案 1 :(得分:1)
你错过了引用字符:
$title = $this->db->escape($title);
$fname = $this->db->escape($f_name)
$sql = "INSERT INTO contacts (title,f_name) " .
"VALUES ('{$title}', '{$fname}')";
$this->db->query($sql);
BTW,$_POST
变量到底是怎么回事?这是SuperGlobal variable之一。您不必在参数中传输它。您可以随时在脚本中的任何位置安全地调用它。
另一个注意事项,因为您使用CodeIgniter,所以最好查看Input
class library并将其用于满足您的所有输入需求。
答案 2 :(得分:0)
Why send $_POST? Use $this->input->post("param_name") and in your instance "$this->load->model('Contacts_model');" in my practice i use "$this->load->model('Contacts_model','instance',[true or false]);" the last parameter is optional (to connect with the DB if you don't use autoload option).
Use this:
function insertContact() {
$title = $this->input->post("title");
$f_name = $this->input->post("f_name");
$sql = "INSERT INTO contacts (title,f_name) " .
"VALUES ('" . $this->db->escape($title) . "','".$this->db->escape($f_name) ."')";
$this->$db->query($sql);
}
DON'T USE $_POST! (And use the Active Record read the user guide)