mysql_fetch_assoc () : (Der Schlüsselname ist der Feldname, und der Wert ist der Wert des entsprechenden Felds der Zeile). Es wird häufig verwendet, um jede Datenzeile im Abfrageergebnis zu durchqueren.
MySQL_Fetch_field () : Feld (Spalte) Meta -Informationen (z. B. Feldname, Typ, Länge usw.) aus dem Ergebnissatz und wird verwendet, um Spaltenstrukturinformationen anstelle von Zeilendaten zu erhalten.
MySQL_Fetch_assoc () wird verwendet, um die von der Abfrage zurückgegebenen Datenzeilen zu lesen, z. B. das Anzeigen der Benutzerliste und die Verarbeitung jedes Datensatzes.
MySQL_Fetch_field () wird verwendet, um Felddefinitionen von Abfrageergebnissen zu lesen, z.
<span><span><span class="hljs-comment">// Angenommen, es gibt bereits $link = mysql_connect(...); mysql_select_db(...);</span></span><span>
</span><span><span class="hljs-comment">// Abfragedaten</span></span><span>
</span><span><span class="hljs-variable">$res</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_query</span></span><span>(</span><span><span class="hljs-string">"SELECT id, username, email FROM users"</span></span><span>);
</span><span><span class="hljs-comment">// verwenden mysql_fetch_assoc() Durch jede Zeile durchlaufen</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_fetch_assoc</span></span><span>(</span><span><span class="hljs-variable">$res</span></span><span>)) {
</span><span><span class="hljs-comment">// $row Es ist ein assoziatives Array: ['id' => '1', 'username' => 'alice', 'email' => '[email protected]']</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ID: <span class="hljs-subst">{$row['id']}</span></span></span><span>, Benutzername: </span><span><span class="hljs-subst">{$row['username']}</span></span><span>\n";
}
</span><span><span class="hljs-comment">// Erhalten Sie Feldinformationen(Zum Beispiel2Spalteninformationen)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mysql_data_seek</span></span><span>(</span><span><span class="hljs-variable">$res</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// Optional:Zeiger positionieren(mysql_fetch_field Ändern Sie den Zeiger nicht,但与verwenden习惯有关)</span></span><span>
</span><span><span class="hljs-variable">$field</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_fetch_field</span></span><span>(</span><span><span class="hljs-variable">$res</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// Parameter 1 Zeigt die an 2 Liste(Index von 0 Start)</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$field</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"1.2Liste名: <span class="hljs-subst">{$field->name}</span></span></span><span>, Typ: </span><span><span class="hljs-subst">{$field->type}</span></span><span>, Länge: </span><span><span class="hljs-subst">{$field->max_length}</span></span><span>\n";
}
</span></span>
veranschaulichen:
mysql_fetch_assoc () gibt ein Array für den Zugriff auf Zeilendaten zurück.
mysql_fetch_field () gibt ein Objekt (oder Falsch ) zurück, das die Meta -Informationen der Spalte (Name, Orgname, max_length, Typ usw.) enthält.
Ich dachte fälschlicherweise, dass MySQL_Fetch_field () den Feldwert einer bestimmten Zeile zurückgeben würde - nein , es gibt die Struktur/Meta -Informationen des Feldes zurück. Um den Wert zu erhalten, verwenden Sie bitte mysql_fetch_assoc () / mysql_fetch_row () usw.
Es wird angenommen, dass MySQL_Fetch_assoc () den Typ oder die Länge eines Feldes erhalten kann - nein , es liefert nur den Wert (und Feldname als Schlüssel).
Sie möchten die Abfrageergebnisse iterieren und die Daten verarbeiten : Verwenden Sie MySQL_Fetch_assoc () (oder modernere MySQLi_Fetch_assoc () / PDOs Fetch (pdo :: fetch_assoc) ).
Sie möchten dynamisch Tabellenheader generieren, Spaltentypen überprüfen oder Spaltennamen/Längen und andere Meta-Informationen lesen : Verwenden Sie mySQL_Fetch_field () (oder mysqli_fetch_field_direct () , $ result-> fetch_field () , pdo getColumnMeta () () Kompatibilität und Grenzen und Grenzen).
Wenn das Ziel darin besteht, Sicherheit, Leistung und langfristige Wartung zu berücksichtigen, migrieren Sie bitte so schnell wie möglich auf MySQLI oder PDO . Die MySQL -Erweiterung wurde in Php 7+ entfernt.
<span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysqli_connect</span></span><span>(</span><span><span class="hljs-string">'host'</span></span><span>,</span><span><span class="hljs-string">'user'</span></span><span>,</span><span><span class="hljs-string">'pass'</span></span><span>,</span><span><span class="hljs-string">'db'</span></span><span>);
</span><span><span class="hljs-variable">$res</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysqli_query</span></span><span>(</span><span><span class="hljs-variable">$mysqli</span></span><span>, </span><span><span class="hljs-string">"SELECT id, username, email FROM users"</span></span><span>);
</span><span><span class="hljs-comment">// Zeilendaten abrufen(Assoziatives Array)</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysqli_fetch_assoc</span></span><span>(</span><span><span class="hljs-variable">$res</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// Erhalten Sie Feldinformationen(1. 1 Liste)</span></span><span>
</span><span><span class="hljs-variable">$fieldInfo</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysqli_fetch_field_direct</span></span><span>(</span><span><span class="hljs-variable">$res</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// oder mysqli_fetch_field($res) Beim Überqueren von Feldern</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$fieldInfo</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fieldInfo</span></span><span>->name . </span><span><span class="hljs-string">' / '</span></span><span> . </span><span><span class="hljs-variable">$fieldInfo</span></span><span>->type . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>
<span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-string">'mysql:host=host;dbname=db;charset=utf8mb4'</span></span><span>, </span><span><span class="hljs-string">'user'</span></span><span>, </span><span><span class="hljs-string">'pass'</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"SELECT id, username, email FROM users"</span></span><span>);
</span><span><span class="hljs-comment">// Zeilendaten abrufen</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch</span></span><span>(PDO::</span><span><span class="hljs-variable constant_">FETCH_ASSOC</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'email'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// Holen Sie sich Feldelementinformationen(Beachten:PDO::getColumnMeta In einigen Fahrern/Instabile Version)</span></span><span>
</span><span><span class="hljs-variable">$meta</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getColumnMeta</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// 1. 2 Liste</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$meta</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$meta</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>] . </span><span><span class="hljs-string">', native_type='</span></span><span> . (</span><span><span class="hljs-variable">$meta</span></span><span>[</span><span><span class="hljs-string">'native_type'</span></span><span>] ?? </span><span><span class="hljs-string">'unknown'</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>
mysql_fetch_assoc () : Zeilendaten zurückgeben (Assoziation Array) - Die bevorzugte Wahl für tägliche Lesendatensätze.
mysql_fetch_field () : Spaltenelementinformationen (Objekt) - verwendet, um strukturelle Informationen wie Spaltenname, Typ und Länge zu lesen.
In der tatsächlichen Entwicklung sollten MySQLI oder PDO verwendet werden, und die entsprechenden Ersatzfunktionen wie fetch_assoc () / fetch_field () / getColumnmeta () sollten verwendet werden, um dieselbe Aufgabe zu erledigen.
Versuchen Sie, parametrisierte Abfragen (Vorverarbeitungsanweisungen) zu verwenden, um die SQL -Injektion zu verhindern ( vorbereiten / bind_param für MySQLI oder vorbereiten / bindValue für PDO).
Wenn Sie nur eine Liste von Spaltennamen benötigen, besteht eine einfache Möglichkeit darin, das assoziative Array der ersten Zeile zu nehmen und Array_Keys () zu verwenden, um den Feldnamen zu erhalten (beachten Sie, dass eine zusätzliche Verarbeitung erforderlich ist, wenn das Ergebnissatz leer ist).