2012-02-10 2 views
4

질문이있는 경우 select users.user_id, users.fname, users.lname, bios.bio, groups.groupid from users LEFT JOIN bios on users.user_id = bios.userid 다음 조건에 다른 테이블을 추가하고 끝에 where 문을 추가하십시오. 문제는 내가 변수를 바인드 할 때 '변수의 수가 변수의 수와 일치하지 않기 때문에'입니다. 어떻게 해결할 수 있을까요? 건배. 예 :mysqli 쿼리를 작성 하시겠습니까?

$info = "select users.user_id, users.fname, users.lname, bios.bio, groups.groupid from users LEFT JOIN bios on users.user_id = bios.userid"; 
    $content = $members->prepare($info); 
    if ($_GET['where'] == 'requests') $info .= "LEFT JOIN requests on users.user_id = requests.receiver"; 
    else if ($_GET['where'] == 'referrals') $info .= "LEFT JOIN referrals on users.user_id = referrals.receiver"; 
    $info .= "where users.user_id = ?"; 
    $content->bind_param('s', $_SESSION['token'][1]); 
    $content->execute(); 

답변

3

SQL 문자열은 준비 후에 변경됩니다. 그러지 마. 대신 다음과 같이하십시오 :

$info = "select users.user_id, users.fname, users.lname, bios.bio, groups.groupid from users LEFT JOIN bios on users.user_id = bios.userid"; 
if ($_GET['where'] == 'requests') $info .= " LEFT JOIN requests on users.user_id = requests.receiver"; 
else if ($_GET['where'] == 'referrals') $info .= " LEFT JOIN referrals on users.user_id = requests.receiver"; 
$info .= " where users.user_id = ?"; 
$content = $members->prepare($info); 
$content->bind_param('s', $_SESSION['token'][1]); 
$content->execute(); 

편집 : 또한 SQL 조각이 필요한 경우 공백으로 구분되어 있는지 확인하십시오. .= 연산자 에 자동으로 공간을 추가합니다.

+0

아하하 캔트 내가 그걸 깨닫지 못했다고 생각합니다. 고마워요! XP –

관련 문제