2012-04-06 120 views
1

因此,我得到了一些使用變量列表的語句,看起來我總是在數據庫中添加另一列,所以我想創建一個變量列表並以某種方式包含變量,以便我可以更改它曾經,如果我需要,而不是六次。將多個變量整合到一個

$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="$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

你檢查,如果bind_result()也可以接受一個數組?如果是這樣,請使用包含所有變量的數組 – Kristian 2012-04-06 19:43:11

+0

謝謝克里斯蒂安,但我試圖把它放在一個數組中,並且綁定似乎不接受數組。我得到「不匹配的變量數」錯誤 – 2012-04-06 19:45:25

回答

1

你可以做的是使(變量引用)的數組,然後用call_user_func_array調用bind_result

例子:

$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循環,也可能是你能夠做到這一點:

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

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

基於關閉這樣的回答:https://stackoverflow.com/a/966717/206403

相關問題