suchen
HeimDatenbankMySQL-TutorialDer Unterschied zwischen MySQL und MySQLi in PHP

1:
PHP-MySQL ist die originellste Erweiterung für PHP zum Betrieb der MySQL-Datenbank. Das i in PHP-MySQLi steht für Improvement, was relativ erweiterte Funktionen betrifft erhöht die Sicherheit. PDO (PHP Data Object) bietet eine Abstraktionsschicht zum Betreiben der Datenbank. Tatsächlich kann man den Unterschied nicht erkennen, also schauen wir uns einfach das Programm an...
Schauen wir uns zunächst einen Absatz mit PHP-Programm an In MySQL geschriebener Code, dieser Beispieltyp wird weltweit häufig verwendet:
Der Code lautet wie folgt:

mysql_connect($db_host, $db_user, $db_password);
mysql_select_db ($dn_name);
$result = mysql_query("SELECT `name` FROM `users` WHERE `location` = '$location'");
while ($row = mysql_fetch_array($result , MYSQL_ASSOC))
{
echo $row['name'];
}
mysql_free_result($result);
?>

Auf den ersten Blick gibt es das Nichts Falsches, aber tatsächlich steckt etwas Wissen dahinter ...
Diese Methode kann keine Spalte binden. In der vorherigen SQL-Beschreibung ist $location beispielsweise anfällig für SQL-Injection. Später wurden mysql_escape_string() (Hinweis: nach 5.3.0 veraltet) und mysql_real_escape_string() entwickelt, um dieses Problem zu lösen. Die gesamte Erzählung wird jedoch kompliziert und hässlich, und wenn es zu viele Felder gibt, können Sie sich vorstellen, was es wäre sei wie...
Der Code lautet wie folgt:

$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s ' ",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
mysql_query($query);
?>

Es gibt kein Problem in PHP- MySQLi Weniger Fortschritte: Zusätzlich zur Lösung der oben genannten Probleme durch Bind Column unterstützt es auch Transaktionen und Mehrfachabfragen und bietet außerdem einen objektorientierten Stil (die Schreibmethode des PHP-MySQLi-Beispiels unten) und einen prozeduralen Stil (das PHP-MySQL-Beispiel). oben) Schreibmethode) Zwei Schreibweisen ... und so weiter.
Der Code lautet wie folgt:

$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);
$sql = "INSERT INTO „Benutzer“ (ID, Name, Geschlecht, Standort) WERTE (?, ?, ?, ?)“;
$stmt = $mysqli->prepare($sql);
$stmt->bind_param ('dsss ', $source_id, $source_name, $source_gender, $source_location);
$stmt->execute();
$stmt->bind_result($id, $name, $gender, $ location);
while ($stmt->fetch())
{
echo $name ;
}close ();
$mysqli->close();
?>

Aber ich habe hier einige Mängel festgestellt, wie zum Beispiel Bind Result, das etwas überflüssig ist, aber tatsächlich nicht Es spielt keine Rolle. Das größte Problem besteht darin, dass es sich nicht um eine Abstraktionsmethode handelt. Wenn also das Backend die Datenbank ändert, beginnt der Schmerz...
Also tauchte PDO auf (Hinweis: Derzeit ist dies für Ubuntu und Debian nicht der Fall Es muss ein direktes Paket installiert werden, die Installation muss jedoch über PECL erfolgen.

Der Code lautet wie folgt:

roga@carlisten-lx:~$ pecl search pdo
================== === ================
Paket stabil/(neueste) lokale
PDO 1.0.3 (stabil) PHP Data Objects Interface.
PDO_4D 0.3 (Beta) PDO-Treiber für 4D-SQL-Datenbank
PDO_DBLIB 1.0 (stabil) FreeTDS/Sybase/MSSQL-Treiber für PDO
PDO_FIREBIRD 0.2 (Beta) Firebird/InterBase 6-Treiber für PDO
PDO_IBM 1.3.2 ( stabil) PDO-Treiber für IBM-Datenbanken
PDO_INFORMIX 1.2.6 (stabil) PDO-Treiber für IBM Informix INFORMIX-Datenbanken
PDO_MYSQL 1.0.2 (stabil) MySQL-Treiber für PDO
PDO_OCI 1.0 (stabil) Oracle Call Interface-Treiber für PDO
PDO_ODBC 1.0.1 (stabil) ODBC v3-Schnittstellentreiber für PDO
PDO_PGSQL 1.0.2 (stabil) PostgreSQL-Treiber für PDO
PDO_SQLITE 1.0.1 (stabil) SQLite v3-Schnittstellentreiber für PDO
pdo_user 0.3 .0 (Beta) Userspace-Treiber für PDO

Nach der Installation über PECL können Sie die Datenbank auf folgende Weise bedienen:
Der Code lautet wie folgt:

$dsn = "mysql:host=$db_host;dbname=$db_name";
$dbh = new PDO($dsn, $db_user, $db_password);
$sql = "SELECT ` name `, `location` FROM `users` WHERE `location` = ? , `name` = ?";
$sth = $dbh->prepare($sql);
$sth->execute ( array($location, $name));
$result = $sth->fetch(PDO::FETCH_OBJ);
echo $result->name . $result->location;
$dbh = NULL;
?>

Auf den ersten Blick scheint der PDO-Code nicht kürzer zu sein, was sind also die Vorteile?
1. Wenn PDO eine Verbindung zu einer Datenbank herstellt, verwendet es die Verbindungszeichenfolge, um zu bestimmen, mit welcher Datenbank eine Verbindung hergestellt werden soll.
2. PDO kann PDO::setAttribute verwenden, um die Verbindungseinstellungen, wie z. B. dauerhafte Verbindung, und die Art und Weise zu bestimmen, wie Fehler zurückgegeben werden (Ausnahme, E_WARNING, NULL). Sogar der Fall des zurückgegebenen Feldnamens usw.
2. PDO unterstützt die Funktion „Spalte binden“ Zusätzlich zu den grundlegenden Funktionen „Vorbereiten“ und „Ausführen“ können Sie auch eine einzelne Spalte binden und den Spaltentyp angeben.
4. PDO ist eine Abstraktionsschicht, daher ist der Aufwand im Vergleich dazu minimal, wenn Sie das Speichermedium wechseln.
Obwohl es diese Dinge schon lange gibt, sind sie leider immer noch nicht populär genug. Ich denke, das liegt vielleicht daran, dass die Leute es gewohnt sind, Bücher auf dem Markt zu lesen, aber diese Bücher stellen oft nur die einfachsten und traditionellsten Methoden vor. Aus diesem Grund verwenden viele Menschen immer noch MySQL, um eine direkte Verbindung zur Datenbank herzustellen.
Derzeit stelle ich persönlich jedoch immer noch gerne eine Verbindung zur Datenbank über DBI her, beispielsweise ActiveRecord und Propel ORM (Object-Relational Mapping).
Wenn Sie beispielsweise ActiveRecord als Beispiel nehmen und eine solche SQL-Anweisung implementieren möchten...
INSERT INTO `users` (id, name, gender, location) VALUES(1, 'roga', ' male', 'tpe' )
Geschrieben in PDO:
Der Code lautet wie folgt:

$sql = "INSERT INTO `users` (id, name, Geschlecht, Ort) VALUES(? , ?, ?, ?)";
$sth = $dbh->prepare($sql);
$sth->execute(array(1, 'roga' , 'männlich', 'tpe '));
?>

Aber in Bezug auf ActiveRecord ist es:
Der Code lautet wie folgt:

php
$user = new User ();
$user->id = 1;
$user->name = 'roga';
$user->gender = 'male ';
$user-> ;location = 'tpe';
$user->save();
?>

Letzteres ist viel einfacher in der Syntax und es Reduziert auch die Notwendigkeit einer SQL-Sprachabhängigkeit erheblich! (Bei Fragen zu SQL-Implementierungen in verschiedenen Datenbanken lesen Sie bitte den Abschnitt Vergleich verschiedener SQL-Implementierungen.)
Das Obige ist eine kurze Einführung. Wenn es Auslassungen und Irrtümer gibt, können Sie diese gerne hinzufügen.



MySQL ist eine nicht persistente Verbindungsfunktion und MySQL ist eine permanente Verbindungsfunktion. Das heißt
MySQL öffnet jedes Mal einen Verbindungsprozess, wenn eine Verbindung hergestellt wird, und wenn MySQL mehrmals ausgeführt wird, wird derselbe Verbindungsprozess verwendet, wodurch der Server-Overhead verringert wird
Einige Freunde verwenden neues MySQL('localhost beim Programmieren ' , usenamer', 'password', 'databasename'); meldet immer
Fehler, Schwerwiegender Fehler: Klasse 'mysqli' nicht gefunden in d:...
Ist die mysqli-Klasse nicht in PHP integriert?
Unter Win ist es nicht aktiviert, Sie müssen php.ini ändern und die Datei „;“ entfernen. Unter Linux muss mysqli darin kompiliert werden.
1: Mysqli.dll ermöglicht den Betrieb der Datenbank in einem Objekt oder Prozess und ist zudem sehr einfach zu verwenden. Hier ist ein Vergleich zwischen mehreren gängigen Vorgängen und mysql.dll.
 1: mysql.dll (kann als funktionale Methode verstanden werden):
Der Code lautet wie folgt:

 $conn = mysql_connect('localhost', 'user', 'password') ; // Mit MySQL-Datenbank verbinden
mysql_select_db('data_base'); //Datenbank auswählen

$result = mysql_query('select * from data_base'); //Hier gibt es einen zweiten optionalen Parameter Geben Sie die offene Verbindung an
 $row = mysql_fetch_row($result)) //Der Einfachheit halber wird hier nur eine Datenzeile verwendet
 echo $row[0] //Gib den Wert des ersten Feldes aus

Mysqli hat auch Die prozedurale Methode verwendet am Anfang nur das MySQLi-Präfix, und alles andere ist fast gleich. Wenn mysqli prozedural arbeitet, müssen einige Funktionen Ressourcen angeben, z. B. mysqli_query (Ressourcenkennung, SQL-Anweisung), und der Parameter der Ressourcenkennung wird vorangestellt, während der Parameter von mysql_query (SQL-Anweisung, „optional“) Die Ressourcenkennung wird am Ende platziert und muss nicht angegeben werden. Standardmäßig wird die zuletzt geöffnete Verbindung oder Ressource verwendet.
 2mysqli.dll (Objektmodus):
Der Code lautet wie folgt:

 $conn = new mysqli('localhost', 'user', 'password','data_base');
 / /Die Verbindung hier ist neu und der letzte Parameter besteht darin, die Datenbank direkt anzugeben, mysql_select_db() ist nicht erforderlich
 //Sie können sie auch beim Erstellen nicht angeben, dann $conn -> data_base')
 $ result = $conn -> query( 'select * from data_base' );
$row = $fetch_row(); //Eine Zeile mit Daten abrufen
echo row[0]; //Die erste Zeile ausgeben Der Wert eines Feldes

Zwei: mysql_fetch_row(), mysql_fetch_array()
Diese beiden Funktionen geben ein Array zurück. Der Unterschied besteht darin, dass das Array von zurückgegeben wird Die erste Funktion enthält nur Werte. Wir können nur $row[0],
$row[1] zum Lesen von Daten mithilfe von Array-Indizes verwenden, und das von mysql_fetch_array() zurückgegebene Array enthält sowohl den ersten Typ als auch den Schlüsselwert
Paarform. Wir können die Daten wie folgt lesen (wenn die Datenbankfelder Benutzername, Passwort sind):
$row['username'], $row['passwd']
Darüber hinaus, wenn Wenn Sie ($row as $kay => $value) verwenden, können Sie auch direkt den Feldnamen der Datenbank erhalten.
Wichtiger ist, dass mysqli eine neue Funktionsbibliothek ist, die von PHP5 (i) bereitgestellt wird und eine schnellere Ausführungsgeschwindigkeit darstellt

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
MySQLs Rolle: Datenbanken in WebanwendungenMySQLs Rolle: Datenbanken in WebanwendungenApr 17, 2025 am 12:23 AM

Die Hauptaufgabe von MySQL in Webanwendungen besteht darin, Daten zu speichern und zu verwalten. 1.Mysql verarbeitet effizient Benutzerinformationen, Produktkataloge, Transaktionsunterlagen und andere Daten. 2. Durch die SQL -Abfrage können Entwickler Informationen aus der Datenbank extrahieren, um dynamische Inhalte zu generieren. 3.Mysql arbeitet basierend auf dem Client-Server-Modell, um eine akzeptable Abfragegeschwindigkeit sicherzustellen.

MySQL: Erstellen Sie Ihre erste DatenbankMySQL: Erstellen Sie Ihre erste DatenbankApr 17, 2025 am 12:22 AM

Zu den Schritten zum Erstellen einer MySQL -Datenbank gehören: 1. Erstellen einer Datenbank und Tabelle, 2. Daten einfügen, und 3. Durchführen von Abfragen. Verwenden Sie zunächst die Anweisungen für erstellte und creatEtable, um die Datenbank und Tabelle zu erstellen, und verwenden Sie dann die Anweisung InsertInto, um die Daten einzulegen, und verwenden Sie schließlich die Auswahlanweisung, um die Daten abzufragen.

MySQL: Ein anfängerfreundlicher Ansatz zur DatenspeicherungMySQL: Ein anfängerfreundlicher Ansatz zur DatenspeicherungApr 17, 2025 am 12:21 AM

MySQL ist für Anfänger geeignet, da es einfach zu bedienen und leistungsfähig ist. 1.Mysql ist eine relationale Datenbank und verwendet SQL für CRUD -Operationen. 2. Es ist einfach zu installieren und erfordert, dass das Stammbenutzerkennwort konfiguriert wird. 3.. Verwenden Sie Einfügen, Aktualisieren, Löschen und Wählen Sie, um Datenvorgänge auszuführen. 4. OrderBy, wo und Join kann für komplexe Abfragen verwendet werden. 5. Debugging erfordert die Überprüfung der Syntax und verwenden Sie Erklärungen zur Analyse der Abfrage. 6. Die Optimierungsvorschläge umfassen die Verwendung von Indizes, die Auswahl des richtigen Datentyps und der guten Programmiergewohnheiten.

Ist MySQL Anfänger-freundlich? Bewertung der LernkurveIst MySQL Anfänger-freundlich? Bewertung der LernkurveApr 17, 2025 am 12:19 AM

MySQL ist für Anfänger geeignet, weil: 1) Einfach zu installieren und konfigurieren, 2) Rich Learning Resources, 3) Intuitive SQL -Syntax, 4) leistungsstarke Toolunterstützung. Anfänger müssen jedoch Herausforderungen wie Datenbankdesign, Abfrageoptimierung, Sicherheitsmanagement und Datensicherung überwinden.

Ist SQL eine Programmiersprache? Klärung der TerminologieIst SQL eine Programmiersprache? Klärung der TerminologieApr 17, 2025 am 12:17 AM

Ja, sqlisaprogrammingLuagespezialisierteForDatamanagement.1) Es ist dieklarativ, fokussierte Waagewhattoachieveratherthanhow.2)

Erklären Sie die Säureeigenschaften (Atomizität, Konsistenz, Isolation, Haltbarkeit).Erklären Sie die Säureeigenschaften (Atomizität, Konsistenz, Isolation, Haltbarkeit).Apr 16, 2025 am 12:20 AM

Säureattribute umfassen Atomizität, Konsistenz, Isolation und Haltbarkeit und sind der Eckpfeiler des Datenbankdesigns. 1. Atomizität stellt sicher, dass die Transaktion entweder vollständig erfolgreich oder vollständig gescheitert ist. 2. Konsistenz stellt sicher, dass die Datenbank vor und nach einer Transaktion konsistent bleibt. 3. Isolation stellt sicher, dass sich Transaktionen nicht stören. 4. Persistenz stellt sicher, dass Daten nach der Transaktionsuntersuchung dauerhaft gespeichert werden.

MySQL: Datenbankverwaltungssystem vs. ProgrammierspracheMySQL: Datenbankverwaltungssystem vs. ProgrammierspracheApr 16, 2025 am 12:19 AM

MySQL ist nicht nur ein Datenbankverwaltungssystem (DBMS), sondern auch eng mit Programmiersprachen zusammen. 1) Als DBMS wird MySQL verwendet, um Daten zu speichern, zu organisieren und abzurufen und Indizes zu optimieren, können die Abfrageleistung verbessern. 2) Kombinieren Sie SQL mit Programmiersprachen, eingebettet in Python, und unter Verwendung von ORM -Tools wie SQLalchemy kann die Operationen vereinfachen. 3) Die Leistungsoptimierung umfasst Indexierung, Abfrage, Caching, Bibliothek und Tabellenabteilung und Transaktionsmanagement.

MySQL: Verwalten von Daten mit SQL -BefehlenMySQL: Verwalten von Daten mit SQL -BefehlenApr 16, 2025 am 12:19 AM

MySQL verwendet SQL -Befehle, um Daten zu verwalten. 1. Grundlegende Befehle umfassen Auswahl, Einfügen, Aktualisieren und Löschen. 2. Die erweiterte Verwendung umfasst die Funktionen, Unterabfragen und Aggregate. 3. Häufige Fehler sind Syntax-, Logik- und Leistungsprobleme. 4. Die Optimierungstipps umfassen die Verwendung von Indizes, die Vermeidung von Auswahl* und die Verwendung von Limit.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung