Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2014, 21:43   #1
lino217
Пользователь
 
Регистрация: 15.09.2010
Сообщений: 29
По умолчанию Запрос CodeIgniter --> MySQL

Доброго времени суток всем!
Существует такая функция в контроллере CodeIgniter, которая должна получить id из таблицы.
Но происходит ошибка:
Object of class CI_DB_mysql_result could not be converted to string.
You have an error in your SQL syntax;

Натолкните, пожалуйста, на мысль. Буду очень признателен.

PHP код:
public function add_comment($id_article=0)
{
    
$this->load->helper('date');
    
$id_article=$this->db->get_where('article_shah',array('id'=>$id_article));
    
$comment_guest=$this->input->post('comment_guest',FALSE);
    
$comment_email=$this->input->post('comment_email',FALSE);
    
$comment_message=$this->input->post('comment_message',FALSE);
    
$data=array
        (
            
//все значения заносим в массив
            
'date'=>date('Y-m-d H:i:s'),
            
'id_article'=>$id_article,
            
'comment_guest'=>$comment_guest,
            
'comment_email'=>$comment_email,
            
'comment_message'=>$comment_message
        
);
    
$this->db->insert('comment_shah_pre'$data);

lino217 вне форума Ответить с цитированием
Старый 09.04.2014, 22:03   #2
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

PHP код:
$id_article=$this->db->get_where('article_shah',array('id'=>$id_article)); 
После этой строки добавьте:
PHP код:
var_dump($id_article);
exit(); 
И смотрите что вернула функция. Судя по ошибке - она вернула объект, а не строку, которая Вас интересует. После чего Вы запихиваете этот объект в массив и пытаетесь его вставить через insert в MySQL, соответственно отсюда и ошибка SQL синтаксиса.

Если не разберётесь сами - скопируйте сюда то, что выведет вам var_dump.
ATL вне форума Ответить с цитированием
Старый 09.04.2014, 22:10   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Так $id_article передается же в этот метод через URL – зачем его повторно запрашивать из БД?
Эта строка не имеет смысла:
PHP код:
$id_article=$this->db->get_where('article_shah',array('id'=>$id_article)); 
Andkorol вне форума Ответить с цитированием
Старый 09.04.2014, 22:14   #4
lino217
Пользователь
 
Регистрация: 15.09.2010
Сообщений: 29
По умолчанию

Вот в таком случае ошибка пропадает, но $id_article не получает значение из таблицы, оставаясь значением, которое инициализируется в начале, то есть 0.

Код:
    public function add_comment($id_article=0)
    {
        $this->load->helper('date');
        $this->db->get_where('article_shah',array('id'=>$id_article));
        $comment_guest=$this->input->post('comment_guest',FALSE);
        $comment_email=$this->input->post('comment_email',FALSE);
        $comment_message=$this->input->post('comment_message',FALSE);
        $data=array
            (
                //все значения заносим в массив
                'date'=>date('Y-m-d H:i:s'),
                'id_article'=>$id_article,
                'comment_guest'=>$comment_guest,
                'comment_email'=>$comment_email,
                'comment_message'=>$comment_message
            );
        $this->db->insert('comment_shah_pre', $data);
    }
lino217 вне форума Ответить с цитированием
Старый 09.04.2014, 22:23   #5
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Цитата:
Сообщение от lino217 Посмотреть сообщение
Вот в таком случае ошибка пропадает, но $id_article не получает значение из таблицы, оставаясь значением, которое инициализируется в начале, то есть 0.
Очевидно, что ошибки больше не будет и в вставлять будет 0. Независимо от того, что стало результатом выполнения этой функции:
PHP код:
        $this->db->get_where('article_shah',array('id'=>$id_article)); 
ведь всё равно дальше пролетает 0.

Вы лучше скажите, что за значение должно приходить в функцию add_comment и что Вы пытаетесь выбрать из базы, чтобы дальше вставить в неё.
ATL вне форума Ответить с цитированием
Старый 09.04.2014, 22:29   #6
lino217
Пользователь
 
Регистрация: 15.09.2010
Сообщений: 29
По умолчанию

Я хочу выбрать значение из ячейки одной таблицы и присвоить его ячейке в другой.
То есть при добавлении комментария в столбце $id_article должен записываться id статьи, чего по какой-то причине не происходит.
lino217 вне форума Ответить с цитированием
Старый 09.04.2014, 22:39   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от lino217 Посмотреть сообщение
Я хочу выбрать значение из ячейки одной таблицы и присвоить его ячейке в другой.
То есть при добавлении комментария в столбце $id_article должен записываться id статьи, чего по какой-то причине не происходит.
Ну а как в метод передается id статьи, к которой относится комментарий?
Метод не может этот id угадать – он должен его получить, либо из формы добавления комментария, либо из URL.
Andkorol вне форума Ответить с цитированием
Старый 10.04.2014, 19:30   #8
lino217
Пользователь
 
Регистрация: 15.09.2010
Сообщений: 29
По умолчанию

Хорошо. А каким образом передать URL из view в контроллер?
В view его можно отобразить как
Код:
$row->id;
lino217 вне форума Ответить с цитированием
Старый 10.04.2014, 19:51   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от lino217 Посмотреть сообщение
Хорошо. А каким образом передать URL из view в контроллер?
В view его можно отобразить как
Код:
$row->id;
Нужно указать его в URL-адресе обработчика формы:
PHP код:
<form action="<?=base_url('comments/add_comment/' $row->id);?>" method="post">
// или же
<form action="/comments/add_comment/<?=$row->id;?>" method="post">
Читаем доки по CI – там всё это есть.
Andkorol вне форума Ответить с цитированием
Старый 10.04.2014, 21:18   #10
lino217
Пользователь
 
Регистрация: 15.09.2010
Сообщений: 29
По умолчанию

Danke. Всё получилось! В конечном виде функция выглядит так.
Код:
public function add_comment($id=0)
    {
        $this->load->helper('date');
        $this->db->get_where('article_shah',array('id'=>$id));
        $comment_guest=$this->input->post('comment_guest',FALSE);
        $comment_email=$this->input->post('comment_email',FALSE);
        $comment_message=$this->input->post('comment_message',FALSE);
        $data=array
            (
                'date'=>date('Y-m-d H:i:s'),
                'id_article'=>$id,
                'comment_guest'=>$comment_guest,
                'comment_email'=>$comment_email,
                'comment_message'=>$comment_message
            );
        $this->db->insert('comment_shah_pre', $data);
    }
lino217 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос к MySQL Abuhamed PHP 1 28.11.2012 21:22
Запрос mysql nitrofox PHP 1 27.08.2011 09:58
Запрос mysql Furyon PHP 1 29.04.2011 14:20
Запрос в MySQL MasterofCDM БД в Delphi 5 03.12.2008 16:58
запрос к mysql wall66 PHP 6 03.11.2008 22:49