Codeigniter concat_ws не работает - PullRequest
       0

Codeigniter concat_ws не работает

0 голосов
/ 19 марта 2012

Получение ошибки, когда я пытался так:

    $ci =& get_instance();              
    $ci->db->select("CONCAT_WS(' ',users.name_first,users.name_last) AS user_name,CONCAT_WS(' ',advertisers.name_first,advertisers.name_last) AS advertiser_name,image,advertiser_reviews.last_updated");

            $ci->db->join('users', 'users.id = advertiser_reviews.user_id');
            $ci->db->join('advertisers', 'advertisers.id = advertiser_reviews.advertiser_id');
            $ci->db->order_by('advertiser_reviews.id','desc');
            $ci->db->limit(1);
            $query = $ci->db->get('advertiser_reviews');

Ошибка выглядит следующим образом:

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM (`hc_advertiser_reviews`) JOIN `hc_users` ON `hc_users`.`id` = `hc_advertis' at line 2

SELECT CONCAT_WS(' ', `hc_users`.`name_first`, `hc_users`.`name_last)` AS user_name, 
       CONCAT_WS(' ', `hc_advertisers`.`name_first`, `hc_advertisers`.`name_last)` AS advertiser_name, 
       `image`, 
       `hc_advertiser_reviews`.`last_updated` 
FROM (`hc_advertiser_reviews`) 
    JOIN `hc_users` ON `hc_users`.`id` = `hc_advertiser_reviews`.`user_id` 
    JOIN `hc_advertisers` ON `hc_advertisers`.`id` = `hc_advertiser_reviews`.`advertiser_id` 
ORDER BY `hc_advertiser_reviews`.`id` desc LIMIT 1

Ответы [ 4 ]

6 голосов
/ 19 марта 2012

попробуйте использовать $this->db->query("your sql query")

EDIT: старайтесь избегать функции автоматического цитирования класса DB CodeIgniter с

$this->db->select("your-query",FALSE)
0 голосов
/ 23 апреля 2014

Только что наткнулся на этот пост, где у меня возникла та же проблема, и вы можете обойти эту проблему, умно используя пробелы.

$ci->db->select("CONCAT_WS(' ',users.name_first,users.name_last ) AS user_name )

В отличие от

$ci->db->select("CONCAT_WS(' ',users.name_first,users.name_last) AS user_name )

Если вы вставите пробел перед последней закрывающей скобкой функции CONCAT_WS, то функция автоматического цитирования CodeIgniter не запутается в том, куда нужно идти. Это также означает, что вам не нужно использовать функцию db-> query ().

0 голосов
/ 21 февраля 2013
$this->db->select('what of sql uncion' ,false);

ложное указание ci игнорировать экранирование с помощью `

0 голосов
/ 19 марта 2012

В конце кода, сгенерированного Codeigniter, присутствует знак `

SELECT CONCAT_WS(' ', `hc_users`.`name_first`, `hc_users`.`name_last)`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...