2014-05-15 4 views
0

쿼리는 특정 언어로 일부 항목의 이름과 설명을 선택해야한다는 생각입니다. 문자열은 id에 대한 열과 각 언어에 대한 열 (fx : 'us'및 'fr')이있는 string 테이블 단순 형식으로 저장됩니다.준비된 문을 통해 열 이름 지정

사용자는 API를 통해 원하는 언어를 지정할 수 있습니다. 즉, PHP의 준비된 문을 사용하여 쿼리를 작성해야합니다.

다음 코드는 어떻게 작동시키고 싶었는지 보여줍니다. 문제는 name.?description.?은 매개 변수가 바인딩 될 때 유효한 열로 평가되지 않습니다.

$query = $mysqli->prepare(
    'SELECT name.?, description.? 
    FROM item 
    JOIN string AS name ON item.nameId = name.id 
    JOIN string AS description ON item.descriptionId = description.id 
    WHERE item.id = ?'); 

$query->bind_param('ssi', $lang, $lang, $id); 

나는 언어 $lang 데이터베이스를 쿼리하기 전에 유효한지 여부를 코드에서 검사를 피하고 싶어. 이렇게하면 데이터베이스에 새로운 언어 열이 추가 될 때마다 코드를 업데이트하지 않아도됩니다.

준비된 문을 통해 열 이름을 지정할 수 있습니까?

답변

0

대답이 아닌 것처럼 보입니다. PDO : Select using a prepared statement returns column name

하는 코드에 확인을하는 것을 방지하기 위해, 별도의 테이블은 모든 언어를 포함하는 추가 할 수 있습니다.

언어

(id, language) 
1, "us" 
2, "fr" 

문자열

(id, stringId, languageID, str) 

1, 4, 1, "Hello" 
2, 4, 2, "Bonjour" 
3, 5, 1, "Yes" 
4, 5, 2, "Oui" 
관련 문제