PHP MySQLi Funktionen: mysqli_query & mysqli_connect

โšก Intelligente Zusammenfassung

MySQLMit PHP und anderen Datenbankzugriffsmethoden kann ein PHP-Skript eine Verbindung zu einer Datenbank herstellen, Abfragen ausfรผhren und Ergebnisse lesen. Diese Anleitung behandelt die wichtigsten mysqli-Funktionen, vollstรคndige CRUD-Beispiele, vorbereitete Anweisungen fรผr mehr Sicherheit sowie die alternativen Zugriffsmethoden PDO und ODBC.

  • ???? AnschlieรŸen: mysqli_connect รถffnet eine Verbindung zu MySQL server, und mysqli_select_db wรคhlt die Datenbank aus, mit der gearbeitet werden soll.
  • ๐Ÿ—ƒ๏ธ Ausfรผhren von Abfragen: mysqli_query fรผhrt INSERT-, SELECT-, UPDATE- und DELETE-Anweisungen gegen die ausgewรคhlte Datenbank aus.
  • ๐Ÿ“„ Leseergebnisse: mysqli_num_rows zรคhlt die zurรผckgegebenen Zeilen, und mysqli_fetch_array liest jede Zeile in ein Array zur Ausgabe ein.
  • ๐Ÿ”„ GRAUSAM Operanationen: Zusammengenommen ermรถglichen diese Funktionen das Erstellen, Lesen, Aktualisieren und Lรถschen von Datensรคtzen โ€“ die vier Kernoperationen einer Datenbank.
  • ๐Ÿ›ก๏ธ Vorbereitete Stellungnahmen: Die Bindung von Werten an vorbereitete Anweisungen verhindert SQL-Injection, im Gegensatz zum Erstellen von Abfragen durch Verkettung von Benutzereingaben.
  • ๐Ÿงฉ PDO und ODBC: PDO bietet eine einheitliche Schnittstelle fรผr viele Datenbank-Engines, wรคhrend ODBC Verbindungen zu Datenquellen wie โ€ฆ herstellt. Microsoft Zugriff.
  • ๐Ÿค– KI-Assistent: KI-Tools kรถnnen รคlteren mysqli-Code in PDO mit vorbereiteten Anweisungen konvertieren und Verbindungsfehler beheben.

PHP MySQL Datenbankzugriff

PHP verfรผgt รผber eine umfangreiche Sammlung integrierter Funktionen zur Manipulation von MySQL Datenbanken.

PHP mysqli_connect-Funktion

Die PHP-Funktion mysqli_connect wird verwendet, um eine Verbindung zu einem SQL Server herzustellen. MySQL Datenbankserver.

Es hat die folgende Syntax.

<?php
$db_handle = mysqli_connect($db_server_name, $db_user_name, $db_password);
?>

HIER,

  • โ€ž$db_handleโ€œ ist die Datenbankverbindungsressourcenvariable.
  • โ€žmysqli_connect(โ€ฆ)โ€œ ist die Funktion fรผr die PHP-Datenbankverbindung.
  • โ€ž$db_server_nameโ€œ ist der Name oder die IP-Adresse des Servers, auf dem die Datenbank gehostet wird. MySQL Server.
  • โ€ž$db_user_nameโ€œ ist ein gรผltiger Benutzername in der MySQL Server.
  • โ€ž$db_passwordโ€œ ist ein gรผltiges Passwort, das einem Benutzernamen in der Datenbank zugeordnet ist. MySQL Server.

PHP mysqli_select_db-Funktion

Die Funktion mysqli_select_db wird zum Auswรคhlen einer Datenbank verwendet.

Es hat die folgende Syntax.

<?php
mysqli_select_db($db_handle, $database_name);
?>

HIER,

  • โ€žmysqli_select_db(โ€ฆ)โ€œ ist die Datenbankauswahlfunktion, die entweder true oder false zurรผckgibt
  • โ€ž$db_handleโ€œ ist der Serververbindungslink.
  • โ€ž$database_nameโ€œ ist der Name der Datenbank

PHP mysqli_query-Funktion

Die Funktion mysqli_query wird verwendet zur Ausfรผhrung SQL Abfragen.

Die Funktion kann zur Ausfรผhrung der folgenden Abfragetypen verwendet werden:

  • Insert
  • Auswรคhlen
  • Update
  • Lรถschen

Es hat die folgende Syntax.

<?php
mysqli_query($db_handle, $query);
?>

HIER,

  • โ€žmysqli_query(โ€ฆ)โ€œ ist die Funktion, die die SQL-Abfragen ausfรผhrt.
  • โ€ž$db_handleโ€œ ist der Serververbindungslink.
  • โ€ž$queryโ€œ ist die auszufรผhrende SQL-Abfrage

PHP mysqli_num_rows-Funktion

Die Funktion mysqli_num_rows wird verwendet, um die Anzahl der von einer Auswahlabfrage zurรผckgegebenen Zeilen abzurufen.

Es hat die folgende Syntax.

<?php
mysqli_num_rows($result);
?>

HIER,

  • โ€žmysqli_num_rows(โ€ฆ)โ€œ ist die Zeilenzรคhlfunktion
  • โ€ž$resultโ€œ ist der mysqli_query-Ergebnissatz

PHP mysqli_fetch_array-Funktion

Die Funktion mysqli_fetch_array dient dazu, Zeilenarrays aus einem Abfrageergebnis-Set abzurufen.

Es hat die folgende Syntax.

<?php
mysqli_fetch_array($result);
?>

HIER,

  • โ€žmysqli_fetch_array(โ€ฆ)โ€œ ist die Funktion zum Abrufen von Zeilenarrays
  • โ€ž$resultโ€œ ist das von der Funktion mysqli_query zurรผckgegebene Ergebnis.

PHP mysqli_close-Funktion

Die Funktion mysqli_close wird verwendet, um eine offene Datenbankverbindung zu schlieรŸen.

Es hat die folgende Syntax.

<?php
mysqli_close($db_handle);
?>

HIER,

  • โ€žmysqli_close(โ€ฆ)โ€œ ist die PHP-Funktion, die die Verbindung schlieรŸt.
  • โ€ž$db_handleโ€œ ist die Serververbindungsressource

PHP MySQL CRUD-Beispiele

Betrachten wir nun praktische Beispiele, die diese Funktionen nutzen. Dieses Tutorial setzt Kenntnisse in folgenden Bereichen voraus: MySQL und SQL; falls Ihnen diese Begriffe nicht gelรคufig sind, konsultieren Sie unsere MySQL und SQL-Tutorials.

Wir erstellen eine einfache Datenbank namens โ€žmy_personal_contactsโ€œ mit nur einer Tabelle. Verbinden Sie sich mit MySQL Verwenden Sie Ihr bevorzugtes Zugriffstool, z MySQL Erstellen Sie mit Workbench oder phpMyAdmin eine Datenbank mit dem Namen my_personal_contacts und fรผhren Sie dann das unten gezeigte Skript aus, um die Tabelle zu erstellen und einige Beispieldaten einzufรผgen.

CREATE TABLE IF NOT EXISTS `my_contacts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`full_names` varchar(255) NOT NULL,
`gender` varchar(6) NOT NULL,
`contact_no` varchar(75) NOT NULL,
`email` varchar(255) NOT NULL,
`city` varchar(255) NOT NULL,
`country` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `my_contacts` (`id`, `full_names`, `gender`, `contact_no`, `email`, `city`, `country`) VALUES
(1, 'Zeus', 'Male', '111', 'zeus@olympus.mt.co', 'Agos', 'Greece'),
(2, 'Anthena', 'Female', '123', 'anthena@olympus.mt.co', 'Athens', 'Greece'),
(3, 'Jupiter', 'Male', '783', 'jupiter@planet.pt.co', 'Rome', 'Italy'),
(4, 'Venus', 'Female', '987', 'venus@planet.pt.co', 'Mars', 'Italy');

Auslesen von Datensรคtzen aus der Datenbank

Wir erstellen nun ein Programm, das die Datensรคtze aus der Datenbank ausgibt.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$sql_stmt = "SELECT * FROM my_contacts"; // SQL select query
$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement

if (!$result)
    die("Database access failed: " . mysqli_error($dbh));

$rows = mysqli_num_rows($result); // get number of rows returned

if ($rows) {
    while ($row = mysqli_fetch_array($result)) {
        echo 'ID: ' . $row['id'] . '<br>';
        echo 'Full Names: ' . $row['full_names'] . '<br>';
        echo 'Gender: ' . $row['gender'] . '<br>';
        echo 'Contact No: ' . $row['contact_no'] . '<br>';
        echo 'Email: ' . $row['email'] . '<br>';
        echo 'City: ' . $row['city'] . '<br>';
        echo 'Country: ' . $row['country'] . '<br><br>';
    }
}
mysqli_close($dbh); // close the database connection
?>

Die Ausfรผhrung des obigen Codes liefert die im folgenden Diagramm dargestellten Ergebnisse.

PHP: MySQL Funktionen

Einfรผgen neuer Datensรคtze

Betrachten wir nun ein Beispiel, das einen neuen Datensatz in unsere Tabelle einfรผgt. Der folgende Code zeigt die Implementierung.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)";
$sql_stmt .= " VALUES(7,8,9,10,11,12)";

$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement
if (!$result)
    die("Adding record failed: " . mysqli_error($dbh));

echo "Poseidon has been successfully added to your contacts list";
mysqli_close($dbh); // close the database connection
?>

Die Ausfรผhrung des obigen Codes gibt die Meldung โ€žPoseidon wurde erfolgreich zu Ihrer Kontaktliste hinzugefรผgtโ€œ aus. Gehen Sie zurรผck zum Beispiel der SELECT-Abfrage und rufen Sie Ihre Kontakte erneut ab, um zu รผberprรผfen, ob Poseidon Ihrer Liste hinzugefรผgt wurde.

Akten aktualisieren

Betrachten wir nun ein Beispiel, das einen Datensatz in der Datenbank aktualisiert. Nehmen wir an, Poseidon habe seine Telefonnummer und E-Mail-Adresse geรคndert.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$sql_stmt = "UPDATE `my_contacts` SET `contact_no` = 8, `email` = 9";
$sql_stmt .= " WHERE `id` = 5"; // SQL update query

$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement
if (!$result)
    die("Updating record failed: " . mysqli_error($dbh));

echo "ID number 5 has been successfully updated";
mysqli_close($dbh); // close the database connection
?>

Datensรคtze lรถschen

Betrachten wir nun ein Beispiel, das Datensรคtze aus der Datenbank entfernt. Nehmen wir an, Venus hat eine einstweilige Verfรผgung gegen uns erwirkt, und wir mรผssen ihre Kontaktdaten aus unserer Datenbank entfernen. Datenbank.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$id = 4; // Venus's ID in the database
$sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"; // SQL delete query

$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement
if (!$result)
    die("Deleting record failed: " . mysqli_error($dbh));

echo "ID number $id has been successfully deleted";
mysqli_close($dbh); // close the database connection
?>

Verhinderung von SQL-Injection durch vorbereitete Anweisungen

Die oben genannten CRUD-Beispiele erstellen Abfragen durch die Verkettung von Zeichenketten. Wenn ein Teil einer Abfrage von Benutzereingaben stammt, รถffnet dies die Tรผr fรผr SQL-Injection. Vorbereitete Anweisungen lรถsen dieses Problem, indem sie die Abfrage und die Daten separat senden, sodass die Eingabe die Abfragestruktur niemals verรคndern kann.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody');
$stmt = mysqli_prepare($dbh, "INSERT INTO my_contacts (full_names, email) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, "ss", $name, $email);
$name = 'Poseidon';
$email = 'poseidon@sea.oc';
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($dbh);
?>

Die Fragezeichen dienen hier als Platzhalter, und `bind_param` bindet die Werte fรผr Name und E-Mail sicher. Die Datenbank behandelt sie strikt als Daten. Daher sind vorbereitete Anweisungen, die sowohl in mysqli als auch in PDO verfรผgbar sind, die empfohlene Methode, um Abfragen mit Benutzereingaben auszufรผhren.

PHP Data Access Object (PDO)

PDO ist eine Klasse, die es uns ermรถglicht, verschiedene Datenbank-Engines zu manipulieren, wie zum Beispiel MySQL, PostgreSQLund MS SQL Server, die dieselbe Schnittstelle verwenden.

Der folgende Code zeigt die Datenbankzugriffsmethode mithilfe des PDO-Objekts.

Hinweis: Der folgende Code setzt Kenntnisse der SQL-Sprache, von Arrays, der Ausnahmebehandlung und der foreach-Schleife voraus.

<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=my_personal_contacts", 'root', 'melody');

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec('SET NAMES "utf8"');

$sql_stmt = "SELECT * FROM `my_contacts`";
$result = $pdo->query($sql_stmt);
$result->setFetchMode(PDO::FETCH_ASSOC);
$data = array();
foreach ($result as $row) {
$data[] = $row;
}
print_r($data);
}
catch (PDOException $e) {
echo $e->getMessage();
}
?>

HIER,

  • โ€žtry{โ€ฆ}catch{โ€ฆ}โ€œ ist der Ausnahmebehandlungsblock.
  • โ€œ$pdo = new PDO(โ€œmysqlโ€ฆโ€ erstellt eine Instanz des PDO-Objekts und รผbergibt den Datenbanktreiber, Server- und Datenbanknamen, die Benutzer-ID und das Passwort.
  • โ€ž$pdo->setAttributeโ€ฆโ€œ legt den PDO-Fehlermodus so fest, dass Ausnahmen ausgelรถst werden.
  • โ€ž$pdo->exec('SET NAMESโ€ฆ') legt das Kodierungsformat fest.

PHP ODBC-Datenzugriff

ODBC ist die Abkรผrzung fรผr Open Database Connectivity. Es hat die folgende grundlegende Syntax.

<?php
$conn = odbc_connect($dsn, $user_name, $password);
?>

HIER,

  • โ€žodbc_connectโ€œ ist die in PHP integrierte Funktion
  • โ€ž$dsnโ€œ ist der Name der ODBC-Datenquelle.
  • โ€ž$user_nameโ€œ ist optional und wird fรผr den ODBC-Benutzernamen verwendet.
  • โ€ž$passwordโ€œ ist optional und wird fรผr das ODBC-Passwort verwendet.

Das folgende Beispiel setzt voraus, dass Sie verwenden Windows und haben eine ODBC-Verbindung zum Northwind hergestellt Microsoft Zugriff auf eine Datenbank mit dem Namen Northwind.

<?php
$dbh = odbc_connect('northwind', '', '');
if (!$dbh) {
exit("Connection Failed: " . $dbh);
}
$sql_stmt = "SELECT * FROM customers";
$result = odbc_exec($dbh, $sql_stmt);
if (!$result) {
exit("Error accessing records");
}
while (odbc_fetch_row($result)) {
$company_name = odbc_result($result, "CompanyName");
$contact_name = odbc_result($result, "ContactName");
echo "<b>Company Name (Contact Person):</b> $company_name ($contact_name) <br>";
}
odbc_close($dbh);
?>

Hรคufig gestellte Fragen

mysqli funktioniert nur mit MySQL PDO bietet sowohl prozedurale als auch objektorientierte Programmierstile. Es arbeitet รผber eine einzige Schnittstelle mit vielen Datenbanken zusammen und unterstรผtzt benannte Platzhalter. Beide unterstรผtzen vorbereitete Anweisungen; PDO ist jedoch besser auf verschiedene Datenbank-Engines รผbertragbar.

Nein. Die ursprรผngliche mysql_*-Erweiterung wurde in PHP 7 entfernt. Verwenden Sie stattdessen mysqli oder PDO. Beide werden aktiv weiterentwickelt, unterstรผtzen Prepared Statements und schรผtzen vor den Injection-Risiken der alten Erweiterung.

Fangen Sie den Fehler ab und zeigen Sie dem Benutzer eine allgemeine Meldung an, wรคhrend Sie die Details privat protokollieren. Geben Sie die Ausgabe von `mysqli_error` nicht fรผr Besucher aus, da diese Tabellennamen und -strukturen offenlegen kann, die fรผr einen Angreifer nรผtzlich sind.

Ja. Fรผgen Sie das mysqli-Skript ein, und AI kann es mit PDO umschreiben, verkettete Abfragen durch gebundene Parameter ersetzen und eine try-catch-Fehlerbehandlung hinzufรผgen. RevSehen Sie sich die Platzhalter an und testen Sie anschlieรŸend jede Abfrage.

Ja. Teilen Sie uns die Fehlermeldung und Ihren Verbindungscode mit, und die KI kann falsche Anmeldeinformationen, einen ungรผltigen Host oder Port, eine fehlende Datenbank oder einen deaktivierten Treiber erkennen und Ihnen anschlieรŸend die korrekten Einstellungen vorschlagen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: