2013-08-09 2 views
1

Я пытаюсь передать имя столбца в виде переменной в запрос базы данных PHP.php синтаксис для имени переменной столбца в запросе

жесткий кодированный синтаксис работает отлично и: select max([257612cr]) as price from Price_TekwaniPrice where customeraccount='DAY001'

Когда я передаю переменную я получаю ошибку trying to get property ofnon object. мой синтаксис:

 $query = $this->db->query(" 
select max(['$product']) as price from Price where customeraccount='$customer' 
     "); 

Я также попытался:

 $query = $this->db->query(" 
select max(".$product.") as price from Price where customeraccount='$customer' 
     "); 

Я подтвердил, что переменные передается правильно. синтаксис для '$customer' работает отлично, поэтому просто передать переменную $product, поскольку имя столбца громоздко.

Я использую php с codeigniter. любой совет приветствуется.

Спасибо, как всегда,

+3

Вы пробовали распечатав составленную строку запроса перед его передачей в функцию запроса(), чтобы увидеть если он соответствует тому, что вы ожидаете? Вы пытались запустить этот печатный запрос в базе данных вручную? –

+0

Предоставленное сообщение об ошибке не имеет смысла для кода, который вы указали, если '$ this' не является объектом. – Mike

+0

Вы уверены, что '$ product' - это строка? Разве это не объект, вызывающий некоторый метод [__toString()] (http://www.php.net/manual/en/language.oop5.magic.php#object.tostring) при использовании в контексте конкатенации? – g4vroche

ответ

1

Нет необходимости соединить переменную PHP, когда уже открыли двойные кавычки попробовать это

$query = $this->db->query(" 
select max([$product]) as price from Price where customeraccount='$customer' 
     "); 

или

$query = $this->db->query(" 
select max($product) as price from Price where customeraccount='$customer' 
     "); 

Хотя об ошибке вы получаете из-за я думаю, что ваш драйвер базы данных не загружен сначала попробуйте загрузить базу данных

$this->load->database('default', TRUE);

Лучший способ использовать Active Record Конфигурационными вы можете сделать это

$this->db->select_max($product); 
$this->db->where('customeraccount', $customer); 
$query = $this->db->get('Price'); 

См Active Record

+0

Как это связано с' пытаться получить свойство ошибки не-объекта? – Mike

+0

какой-нибудь совет о внедрении SQL? $ продукт дезинфицирован? –

+0

Привет, по-прежнему ошибка: 'Попытка получить свойство не-объекта' $ product def не передается правильно. Благодарю. – Smudger

Смежные вопросы