Вставить оператор с CodeIgniter - так запутано - PullRequest
1 голос
/ 15 октября 2011

У меня все хорошо с CodeIgniter. Я могу делать операторы SELECT в моей базе данных MySQL без каких-либо проблем. Но сейчас я пытаюсь сделать ВСТАВКУ.

Обратите внимание, что я еще не пробовал оператор 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, но если это то, что меня портит, то я все еще не понимаю, что делаю неправильно. Все примеры похожи на мои.

Помощь

EDIT

    $sql = "INSERT INTO contacts (title,f_name) VALUES ('$this->db->escape($title)','$this->db->escape($f_name)'";
    $this->$db->query($sql);

Я тоже так пробовал. И много других вариантов. Кажется, это не мой синтаксис ... Я думаю.

Ответы [ 3 ]

4 голосов
/ 15 октября 2011

Ваш запрос в порядке, единственная причина, по которой запрос не выполняется, заключается в том, что вы используете это:

$this->$db->query($sql);

нет ничего похожего на $ db, просто используйте это:

$this->db->query($sql);

Я уверен, что это проблема, но если это не так, пожалуйста, напишите об ошибке, что она дает. Спасибо.

Надеюсь, это поможет.

1 голос
/ 15 октября 2011

Вы пропустили символ кавычки:

$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);

Кстати, что, черт возьми, с переменной $_POST?Это одна из SuperGlobal переменных .Вам не нужно передавать его в параметре.Вы всегда можете безопасно вызвать его в любом месте своего скрипта.

Еще одно примечание: поскольку вы используете CodeIgniter, вам лучше проверить библиотеку классов Input и использовать ее для всех ваших нужд ввода.

0 голосов
/ 15 октября 2011
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...