2009-07-02 11 views
2

Die MySQLi-Funktion von PHP ist großartig.PHP Mysqli fetch_assoc

Vorbereitete Anweisungen eignen sich hervorragend zum Eingeben von Parametern in eine Abfrage.

Wenn Sie jedoch Statements verwenden, scheint es, dass Sie nicht mehr auf die Funktion fetch_assoc zugreifen können. Sie müssen alle Ihre Ergebnisse manuell binden. Das bedeutet, dass meine SQL-Abfrage alle Felder auflisten muss, dann muss ich alle Variablen im Voraus auflisten, wenn ich die Ergebnisse erhalte (mit bind_result). Dies kann sehr ärgerlich und zeitverschwendend werden.

Gibt es eine Alternative?

Dank

Antwort

1

MySQLi bietet Methoden für den Umgang damit, werfen Sie einen Blick auf result_metadata Funktion.

ich eine Klasse geschrieben haben, stressfreien parametrisiert MySQLi Abfragen zu ermöglichen - ein Download und grundlegende Verwendung Informationen finden Sie hier: http://www.robpoyntz.com/blog/?p=191

+0

Wenn Sie interessiert sind, habe ich eine PDO-Version mit der gleichen Schnittstelle erstellt, so ist ein Ersatz für den obigen MySQLi-Code. Interessanterweise scheint die PDO-Version fast 50% schneller zu laufen als die MySQL-Version. Quellcode ist hier verfügbar: http://www.robpoyntz.com/blog/?p=260 –

+0

Link unterbrochen, die Antwort enthält keine Fehlerbehebung mehr. – BadPirate

4

Ja, es PDO und ist im allgemeinen bevorzugt zu MySQLi genannt wird. Es bietet Anweisungen mit den regulären Abrufoptionen und zwingt Sie nicht, alle Parameter explizit zu binden. Eine typische Abfrage könnte wie folgt aussehen:

$stmt = $db->prepare("SELECT * FROM foo WHERE a = ?"); 
$stmt->execute(array($a)); 

$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

PDO ist sehr flexibel, so dass es auch auf andere Arten verwendet werden kann. Es gibt viele gute Beispiele im Handbuch. Schau mal!

+1

schön, sieht PDO ein bisschen weniger ein Schmerz zu sein, als Mysqli für präpariertes mit Statements :) – Jason