2012-04-06 2 views
1

변수의 목록을 사용하여 두 문장을 얻었습니다. 변수 목록을 만들고 싶을 정도로 항상 다른 열을 데이터베이스에 추가하고있는 것처럼 보입니다. 한 번만하면 6 번 대신에해야합니다.하나의 PHP 다중 변수

varList="$a, $b, $c, $d, $e, $f, $g"; 

    $stmt = $mysql->prepare("SELECT * FROM table WHERE id =? LIMIT 1"); 

$stmt -> bind_param('i', $id); 

$stmt->execute(); 

$stmt->bind_result($varList); 

$stmt->fetch(); 

$stmt->close(); 
+0

당신이 경우 확인이 :

$varList = array(&$a, &$b, &$c, &$d, &$e, &$f, &$g); // variable references call_user_func_array(array($stmt, 'bind_result'), $varList); 

이 대답을 기반으로 bind_result()도 배열을 받아 들일 수 있습니까? 그렇다면 모든 배열을 사용하여 귀하의 모든 바스 – Kristian

+0

감사합니다 크리스티안,하지만 그것을 배열에 퍼팅 시도하고 배열을 받아들이지 않는 바인딩 않습니다. 내가 "변수의 일치하지 않는 번호"오류가 발생했습니다 –

답변

1

당신이 할 수있는 것은 (변수 참조) 배열을하고, 다음 bind_result 전화를 call_user_func_array를 사용

$stmt = $mysql->prepare("SELECT * FROM table WHERE id =? LIMIT 1"); 

$stmt -> bind_param('i', $id); 

$stmt->execute(); 

$stmt->bind_result($a, $b, $c, $d, $e, $f, $g); 

$stmt->fetch(); 

$stmt->close(); 

는하지만 이런 식으로 뭔가를 만들고 싶어.

예 :

$varList = array('a', 'b', 'c', 'd', 'e', 'f', 'g'); // variable names. 
$params = array(); // list of params 

foreach($varList as $v){ 
    $params[] = &$$v; // store a reference to the vars in $params 
} 

call_user_func_array(array($stmt, 'bind_result'), $params); 

당신은 foreach 루프, 당신은 또한이 작업을 수행 할 수 있다는 것을 필요로하지 않을 수 있습니다 https://stackoverflow.com/a/966717/206403