2014-04-27 5 views
0

준비된 호출을 사용하여 데이터베이스 테이블 'members'에서 하나의 결과를 검색하려고합니다.MySQLi가 예상대로 결과를 준비하지 않았습니다.

$favid = 1; 
$type = "favdeal"; 
$action = 1; 
$user_id = 1; 

$stmt = $mysqli->prepare("SELECT ? FROM members WHERE id=?"); 
$stmt->bind_param('ss', $type, $user_id); 
$stmt->execute(); 
$stmt->bind_result($favs); 
while ($stmt->fetch()) { 
    print($favs); 
} 
$stmt->close(); 

이것은 모든 종류의 결과를 얻을 수있는 유일한 방법입니다.

테이블에 값이 '2'인 'favdeal'이라는 열이 있습니다. 인쇄 된 결과는 값이 아닌 열의 이름을 반환합니다.

제 질문은 어떻게 열의 이름 대신 '2'값을 얻습니까?

+4

당신은 테이블과 열을 바인딩 할 수 없습니다 'SELECT'기간 : MySQL의 목록은

SELECT '$type' FROM members WHERE id=? 

는 다음 페이지를 방문, 예약 된 단어. 실제 열을 선택하십시오. 변수를 사용하려면'SELECT $ type'을하십시오. –

+0

아, 고마워, 내가 그럴 수 없다는 걸 몰랐어. – ChristopherStrydom

+0

당신을 진심으로 환영합니다. –

답변

1

당신은 당신이 SELECT ?에서이 같은 SELECT 일에서 열 (또는 테이블)를 바인딩 할 수 없습니다.

  • 실제 열을 선택하십시오.

동적으로 지정하려면 변수를 사용해야합니다.

예 : SELECT $type < = 허용됩니다.

그러나의 경우 WHERE 절을 사용할 때 열 이름을 바인드 할 수 있습니다.

예 : SELECT column FROM table WHERE column=?
당신이 현재 =>WHERE id=?

가의 설명서를 참조하여 사용하는 bind_param()


각주 :

당신이 MySQL을 사용하는 일이 있다면, 당신은 역 따옴표와 열의 변수를 포장해야합니다 (이 일어날 수 ) 단어를 소유.

예 : ($type="from";을 사용하는 경우) "from"은 예약어입니다.

관련 문제