2015-02-11 3 views
0

Как использовать как предложение в коде iginiter query() WITH BIND PARAMS?Как использовать как предложение в коде iginiter query() С BIND PARAMS?

Например: Когда я использую

$query = 'SELECT mycol FROM mytable WHERE name LIKE %?'; 
$name = 'foo'; 
$db->this->query($query,array($name)); 
//the clause generated 
//SELECT mycol FROM mytable WHERE id LIKE '%'foo'%' 
//I expected this 
//SELECT mycol FROM mytable WHERE id LIKE '%foo' 

Я не ставить значения PARAM внутри запроса и использовать, как показано ниже: $ запрос = «SELECT Mycol FROM туЬаЫе где имя LIKE '% Foo';

Также я не могу использовать $ this-> db-> как() функцию, как мой запрос состоит из: INSERT IGNORE и INSERT INTO таблицы SELECT, FROM седловины table2;

Пожалуйста, предлагает? Спасибо,

ответ

1
$query = 'SELECT mycol FROM mytable WHERE name LIKE ?'; 
$name = '%foo'; 
$this->db->query($query,array($name)); 
+0

Это правильный ответ, но нужно исправить '$ db-> this-> query' в' $ this-> db-> query' –

+0

Спасибо, я просто скопировал его у автора вопроса. Теперь это правильно. – pbogut

1

CodeIgniter заменит ? с 'params' значением. если вы пишете это

$query = 'SELECT mycol FROM mytable WHERE name LIKE %?'; 
$name = 'foo'; 
//$db->this->query($query,array($name)); //you wrote this line wrong. 
//it should be like this 
    $this->db->query($query,array($name)); 

он будет производить

SELECT mycol FROM mytable WHERE name LIKE %'foo' //inverse comma after % ,actually before and after foo. 

Так что ваш правильный путь будет

$query = 'SELECT mycol FROM mytable WHERE name LIKE ?'; 
$name = '%foo';  
$this->db->query($query,array($name)); 

Он будет производить

SELECT mycol FROM mytable WHERE name LIKE '%foo' 

Примечание
Вы написали это что неправильно

$db->this->query($query,array($name)); 

Правильный способ

$this->db->query($query,array($name));