In der PHP -Entwicklung ist es sehr häufig, die MySQLI -Erweiterung für Datenbankoperationen zu verwenden. Die Funktion MySQLI_Result :: Fetch_Column ist eine einfache Methode zum Extrahieren von Einzelspaltendaten aus Abfrageergebnissen. In der tatsächlichen Verwendung werden viele Entwickler jedoch auf das Problem der Datenverdoppelung stoßen. In diesem Artikel wird die Ursachen doppelter Daten als Reaktion auf dieses Phänomen analysiert und wirksame Lösungen und Stichprobencode bereitstellen, damit alle dieses Problem vermeiden können.
Unsachgemäßes Design von Datenbankabfrageanweisungen <br> Die Hauptursache für doppelte Daten ist oft die SQL -Abfrage selbst, z .
Datenextraktionsmethodenfehler <br> Bei Verwendung von Fetch_Column kann dies auch zu einer wiederholten Ausgabe führen, wenn die Daten unangemessen in der Schleife verarbeitet werden.
Datencache- oder Schleifenlogikdefekte <br> Wenn die Daten nach der Speicherung im Array nicht korrekt dedupliziert werden oder ein Problem mit der Schleifenquellenlogik vorliegt, führt dies auch zu einer Duplikation.
Der direkteste und effizienteste Weg besteht darin, in SQL -Anweisungen zu deduplizieren:
$sql = "SELECT DISTINCT column_name FROM table_name WHERE conditions";
$result = $mysqli->query($sql);
Dies stellt sicher, dass jedes Datenstück im zurückgegebenen Ergebnissatz eindeutig ist.
Fetch_Column extrahiert nur eine Datenspalte in der aktuellen Zeile. Wenn Sie es eine Schleife nennen, können Sie die Datenzeile nach Zeile abrufen, müssen jedoch darauf achten:
Stellen Sie sicher, dass keine doppelten Anrufe zu einer doppelten Ausgabe führen.
Vermeiden Sie das Ergebnissatz nicht ordnungsgemäß zu befreien oder wiederzuverwenden.
Wenn die Datenbankschicht keine Einzigartigkeit sicherstellen kann, kann die PHP -Schicht Array -Deduplizierung verwenden:
$data = [];
while ($value = $result->fetch_column()) {
$data[] = $value;
}
$data = array_unique($data); // Entfernen Sie doppelte Werte
Hier ist ein vollständiges Beispiel, das zeigt, wie man doppelte Daten vermeidet:
<?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
if ($mysqli->connect_errno) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// verwendenDISTINCTVermeiden Sie doppelte Daten
$sql = "SELECT DISTINCT user_email FROM users WHERE status = 'active'";
$result = $mysqli->query($sql);
if ($result) {
$emails = [];
while ($email = $result->fetch_column()) {
$emails[] = $email;
}
// Stellen Sie sicher, dass Sie das Gewicht erneut entfernen(verhindernSQLDie Aussage funktioniert nicht)
$emails = array_unique($emails);
foreach ($emails as $email) {
echo $email . "<br>";
}
$result->free();
} else {
echo "Abfrage fehlgeschlagen: " . $mysqli->error;
}
$mysqli->close();
?>
Wenn Sie SQL entwickeln, wird bei der Deduplizierung eindeutig verwendet.
Fetch_column extrahiert einzelne Spaltendaten nach Zeile und ruft vernünftig auf.
Die PHP -Seite verwendet Array_unique als sekundäre Deduplizierungsmethode.
Überprüfen Sie die zugehörige Abfrage- und Datenstruktur, um unbeabsichtigte doppelte Zeilen zu vermeiden.
Durch die oben genannten Techniken kann das doppelte Datenproblem bei der Verwendung von MySQLI_Result :: fetch_column im Grunde genommen beseitigt werden und die Code -Robustheit und die Datengenauigkeit können verbessert werden.