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 변수를 열 이름으로 전달하는 것이 번거로울 수 있습니다.

저는 codeigniter가있는 PHP를 사용하고 있습니다. 어떤 조언을 환영합니다. 항상

감사합니다,

+3

당신이 볼 수있는 쿼리() 함수에 전달하기 전에 작성된 쿼리 문자열을 인쇄 해봤보기 당신이 할 수있는 CI의 액티브 레코드를 사용하는 가장 좋은 방법 그것이 당신이 기대하는 것과 일치한다면? 데이터베이스에서 인쇄 된 쿼리를 수동으로 실행 해 보셨습니까? –

+0

'$ this'가 객체가 아니라면, 제공 한 코드에 대해 제공된 오류 메시지가 의미가 없습니다. – Mike

+0

'$ product'이 문자열인지 확신합니까? 연결 컨텍스트에서 사용할 때 일부 [__toString()] (http://www.php.net/manual/en/language.oop5object.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);

그래서

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

Active Record

+0

'어떻게 속성을 얻으려고하는지 개체가 아닌'오류? – Mike

+0

SQL injection에 대한 조언이 있으십니까? $ 제품이 소독 되나요? –

+0

안녕하세요, 여전히 오류가 발생했습니다 :'객체가 아닌 객체의 속성을 얻으려고 시도 중입니다. '$ product def 올바르게 전달되지 않았습니다. 감사. – Smudger