2013-04-02 66 views
6

我正在使用mysqli prepare語句來查詢具有多個約束的數據庫。我已經在我的測試文件中運行了代碼,並且它工作得很好。然而,當我在我的直播移動文件的代碼,它拋出的錯誤如下:PHP mysqli編寫語句不起作用

PHP的警告:)mysqli_stmt :: bind_result(:綁定變量的數目 不會在事先準備好的聲明匹配字段數 C:\瓦帕\ WWW \ firecom \ firecom.php線80上

PHP說明:未定義變量:導致 C:\瓦帕\ WWW \ firecom \ firecom.php上線89

兩個參數都被正確設置,但有些東西正在拋棄它。

代碼:

$query = $mysqli->prepare("SELECT * FROM calls WHERE wcccanumber = ? && county = ?"); 
$query->bind_param("ss", $wcccanumber, $county); 
$query->execute(); 

$meta = $query->result_metadata(); 

while ($field = $meta->fetch_field()) { 
    $parameters[] = &$row[$field->name]; 
} 

call_user_func_array(array($query, 'bind_result'), $parameters); 

while ($query->fetch()) { 
    foreach($row as $key => $val) { 
     $x[$key] = $val; 
    } 
    $results[] = $x; 
} 

print_r($results['0']); 

$查詢的var_dump:

object(mysqli_stmt)#27 (10) { ["affected_rows"]=> int(-1) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(2) ["field_count"]=> int(13) ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["sqlstate"]=> string(5) "00000" ["id"]=> int(1) } 
+0

你可以使用&&在SQL查詢?我認爲這是在WHERE子句中。嘗試SELECT * FROM調用WHERE wcccanumber =? AND縣=? –

+0

@JeffHawthorne實際上'&&'是mysql中AND的同義詞:http://dev.mysql.com/doc/refman/5.0/en/logical-operators.html#operator_and –

+0

'$ results'警告很簡單 - 服務器正在檢查未定義的變量,而你的本地變量不是。在while($ query-> fetch())'循環之前定義'$ results',它會消失。 –

回答

3

爲什麼用mysqli的折磨自己?
PDO,你需要沒有這些可怕的代碼,但只有一條線得到的結果

$query = $pdo->prepare("SELECT * FROM calls WHERE wcccanumber = ? && county = ?"); 
$query->execute(array($wcccanumber, $county)); 
$results = $query->fetchAll(); 
print_r($results[0]); 
+0

是的,這個工作好多了。謝謝! –