2013-04-02 4 views
6

Ich verwende eine mysqli preparse-Anweisung, um meine db mit mehreren Einschränkungen abzufragen. Ich habe den Code in einer Testdatei von mir ausgeführt und es funktioniert einwandfrei. Allerdings, wenn ich den Code zu meiner Live-Datei verschieben wirft sie den Fehler unten:PHP mysqli vorbereiten Anweisung funktioniert nicht

PHP Warning: mysqli_stmt :: bind_result(): Anzahl der Bindevariablen nicht Anzahl der Felder in vorbereiteter Aussage überein in C: \ wamp \ www \ firecom \ firecom.php auf Leitung 80

PHP Hinweis: Nicht definierte Variable: Ergebnisse in C: \ wamp \ www \ firecom \ firecom.php auf Leitung 89

Beide Parameter werden korrekt eingestellt, aber etwas gibt es ab.

Code:

$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']); 

$ query 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

können Sie verwenden && in einer SQL-Abfrage zu bekommen? Ich dachte, es wäre UND in einer WHERE-Klausel. versuche SELECT * FROM Anrufe WHERE wcccanumber =? UND county =? –

+0

@JeffHawthorne Eigentlich ist '&&' ein Synonym für AND in mysql: http://dev.mysql.com/doc/refman/5.0/en/logical-operators.html#operator_and –

+0

Die Warnung '$ results' ist einfach - Der Server sucht nach undefinierten Variablen und Ihre lokale nicht. Definiere '$ result' vor der' while ($ query-> fetch()) 'Schleife und es wird verschwinden. –

Antwort

3

Warum quälen Sie sich mit mysqli?
In PDO werden Sie keine dieser schrecklichen Codes benötigen, aber nur eine Linie, die die Ergebnisse

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

Ja, das funktioniert viel besser. Vielen Dank! –