Freigeben über


Verwenden von PHP mit Azure Database for MySQL – Flexible Server

In diesem Schnellstart wird gezeigt, wie Sie mithilfe einer PHP-Anwendung eine Verbindung mit Azure Database for MySQL – flexibler Server herstellen. Es wird veranschaulicht, wie Sie SQL-Anweisungen zum Abfragen, Einfügen, Aktualisieren und Löschen von Daten in der Datenbank verwenden. Bei diesem Artikel wird davon ausgegangen, dass Sie mit der PHP-Entwicklung vertraut sind und noch keine Erfahrung mit Azure Database for MySQL Flexible Server haben.

Voraussetzungen

In diesem Schnellstart werden die Ressourcen, die in den folgenden Anleitungen erstellt wurden, als Startpunkt verwendet:

Vorbereiten Ihrer Clientarbeitsstation

  1. Wenn Sie Ihren flexiblen Server mit privatem Zugriff (Virtual Network Integration) erstellt haben, müssen Sie von einer Ressource innerhalb desselben virtuellen Netzwerks wie Ihr Server eine Verbindung mit Ihrem Server herstellen. Sie können einen virtuellen Computer erstellen und zum virtuellen Netzwerk hinzufügen, das mit Ihrer Flexible Server-Instanz erstellt wurde. Weitere Informationen finden Sie unter Erstellen und Verwalten von virtuellen Netzwerken für Azure Database for MySQL – Flexibler Server mithilfe der Azure CLI.

  2. Wenn Sie Ihre Flexible Server-Instanz mit Öffentlicher Zugriff (zulässige IP-Adressen) erstellt haben, können Sie die lokale IP-Adresse der Liste der Firewallregeln auf Ihrem Server hinzufügen. Weitere Informationen finden Sie unter Verwalten von Firewallregeln für Azure Database for MySQL – Flexibler Server mithilfe der Azure CLI.

Installieren von PHP

Installieren Sie PHP auf Ihrem eigenen Server, oder erstellen Sie eine Azure-Web-App, die PHP enthält. Unter Erstellen und Verwalten von Firewallregeln erfahren Sie, wie Sie Firewallregeln erstellen.

  1. Laden Sie die PHP-Version 7.1.4 herunter.
  2. Installieren Sie PHP, und informieren Sie sich im PHP-Handbuch über die weitere Konfiguration.

Abrufen von Verbindungsinformationen

Rufen Sie die Verbindungsinformationen ab, die zum Herstellen einer Verbindung mit der Azure Database for MySQL Flexible Server-Instanz erforderlich sind. Sie benötigen den vollqualifizierten Servernamen und die Anmeldeinformationen.

  1. Melden Sie sich beim Azure-Portal an.
  2. Wählen Sie im Azure-Portal im linken Menü Alle Ressourcen aus, und suchen Sie dann nach dem Server, den Sie erstellt haben (z.B. mydemoserver).
  3. Wählen Sie den Servernamen aus.
  4. Notieren Sie sich im Bereich Übersicht des Servers den Servernamen und den Anmeldenamen des Serveradministrators. Wenn Sie Ihr Kennwort vergessen haben, können Sie es in diesem Bereich auch zurücksetzen.

Verbinden mit einer Flexibler Server-Instanz mithilfe von TLS/SSL in PHP

Sie können die folgenden Codebeispiele nutzen, um in Ihrer Anwendung über TLS/SSL eine verschlüsselte Verbindung mit Ihrer Flexible Server-Instanz einzurichten. Sie können das Zertifikat unter https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem herunterladen, das für die Kommunikation über TLS/SSL erforderlich ist.

$conn = mysqli_init();
mysqli_ssl_set($conn,NULL,NULL, "/var/www/html/DigiCertGlobalRootCA.crt.pem", NULL, NULL);
mysqli_real_connect($conn, 'mydemoserver.mysql.database.azure.com', 'myadmin', 'yourpassword', 'quickstartdb', 3306, MYSQLI_CLIENT_SSL);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}

Herstellen einer Verbindung und Erstellen einer Tabelle

Verwenden Sie den folgenden Code, um mit der SQL-Anweisung des Typs CREATE TABLE eine Verbindung herzustellen und eine Tabelle zu erstellen.

Im Code wird die Klasse mit der verbesserten MySQL-Erweiterung (mysqli) verwendet, die in PHP enthalten ist. Im Code werden die Methoden mysqli_init und mysqli_real_connect aufgerufen, um eine Verbindung mit MySQL herzustellen. Anschließend wird die mysqli_query-Methode aufgerufen, um die Abfrage auszuführen. Als Nächstes wird die mysqli_close-Methode aufgerufen, um die Verbindung zu schließen.

Ersetzen Sie die Parameter „host“, „username“, „password“ und „db_name“ durch Ihre eigenen Werte.

<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$password = 'your_password';
$db_name = 'your_database';

//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}

// Run the create table query
if (mysqli_query($conn, '
CREATE TABLE Products (
`Id` INT NOT NULL AUTO_INCREMENT ,
`ProductName` VARCHAR(200) NOT NULL ,
`Color` VARCHAR(50) NOT NULL ,
`Price` DOUBLE NOT NULL ,
PRIMARY KEY (`Id`)
);
')) {
printf("Table created\n");
}

//Close the connection
mysqli_close($conn);
?>

Einfügen von Daten

Verwenden Sie den folgenden Code, um eine Verbindung herzustellen und mit einer SQL-Anweisung des Typs INSERT Daten einzufügen.

Im Code wird die Klasse mit der verbesserten MySQL-Erweiterung (mysqli) verwendet, die in PHP enthalten ist. Im Code wird die mysqli_prepare-Methode verwendet, um eine vorbereitete INSERT-Anweisung zu erstellen, und anschließend werden die Parameter für jeden eingefügten Spaltenwert mit der mysqli_stmt_bind_param-Methode gebunden. Im Code wird die Anweisung mit der mysqli_stmt_execute-Methode ausgeführt, und anschließend wird die Anweisung mit der mysqli_stmt_close-Methode geschlossen.

Ersetzen Sie die Parameter „host“, „username“, „password“ und „db_name“ durch Ihre eigenen Werte.

<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$password = 'your_password';
$db_name = 'your_database';

//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {f
die('Failed to connect to MySQL: '.mysqli_connect_error());
}

//Create an Insert prepared statement and run it
$product_name = 'BrandNewProduct';
$product_color = 'Blue';
$product_price = 15.5;
if ($stmt = mysqli_prepare($conn, "INSERT INTO Products (ProductName, Color, Price) VALUES (?, ?, ?)")) {
mysqli_stmt_bind_param($stmt, 'ssd', $product_name, $product_color, $product_price);
mysqli_stmt_execute($stmt);
printf("Insert: Affected %d rows\n", mysqli_stmt_affected_rows($stmt));
mysqli_stmt_close($stmt);
}

// Close the connection
mysqli_close($conn);
?>

Lesen von Daten

Verwenden Sie den folgenden Code, um die Daten mit einer SQL-Anweisung des Typs SELECT zu verbinden und zu lesen. Im Code wird die Klasse mit der verbesserten MySQL-Erweiterung (mysqli) verwendet, die in PHP enthalten ist. Im Code wird die mysqli_query-Methode zum Durchführen der SQL-Abfrage genutzt, und mit der mysqli_fetch_assoc-Methode werden die sich ergebenden Zeilen abgerufen.

Ersetzen Sie die Parameter „host“, „username“, „password“ und „db_name“ durch Ihre eigenen Werte.

<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$password = 'your_password';
$db_name = 'your_database';

//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}

//Run the Select query
printf("Reading data from table: \n");
$res = mysqli_query($conn, 'SELECT * FROM Products');
while ($row = mysqli_fetch_assoc($res)) {
var_dump($row);
}

//Close the connection
mysqli_close($conn);
?>

Aktualisieren von Daten

Verwenden Sie den folgenden Code, um die Daten mit einer SQL-Anweisung des Typs UPDATE zu verbinden und zu aktualisieren.

Im Code wird die Klasse mit der verbesserten MySQL-Erweiterung (mysqli) verwendet, die in PHP enthalten ist. Im Code wird die mysqli_prepare-Methode verwendet, um eine vorbereitete UPDATE-Anweisung zu erstellen, und anschließend werden die Parameter für jeden aktualisierten Spaltenwert mit der mysqli_stmt_bind_param-Methode gebunden. Im Code wird die Anweisung mit der mysqli_stmt_execute-Methode ausgeführt, und anschließend wird die Anweisung mit der mysqli_stmt_close-Methode geschlossen.

Ersetzen Sie die Parameter „host“, „username“, „password“ und „db_name“ durch Ihre eigenen Werte.

<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$password = 'your_password';
$db_name = 'your_database';

//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}

//Run the Update statement
$product_name = 'BrandNewProduct';
$new_product_price = 15.1;
if ($stmt = mysqli_prepare($conn, "UPDATE Products SET Price = ? WHERE ProductName = ?")) {
mysqli_stmt_bind_param($stmt, 'ds', $new_product_price, $product_name);
mysqli_stmt_execute($stmt);
printf("Update: Affected %d rows\n", mysqli_stmt_affected_rows($stmt));

//Close the connection
mysqli_stmt_close($stmt);
}

mysqli_close($conn);
?>

Löschen von Daten

Verwenden Sie den folgenden Code, um die Daten mit einer SQL-Anweisung des Typs DELETE zu verbinden und zu lesen.

Im Code wird die Klasse mit der verbesserten MySQL-Erweiterung (mysqli) verwendet, die in PHP enthalten ist. Im Code wird die mysqli_prepare-Methode verwendet, um eine vorbereitete DELETE-Anweisung zu erstellen, und anschließend werden die Parameter für die WHERE-Klausel in der Anweisung mit der mysqli_stmt_bind_param-Methode gebunden. Im Code wird die Anweisung mit der mysqli_stmt_execute-Methode ausgeführt, und anschließend wird die Anweisung mit der mysqli_stmt_close-Methode geschlossen.

Ersetzen Sie die Parameter „host“, „username“, „password“ und „db_name“ durch Ihre eigenen Werte.

<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$password = 'your_password';
$db_name = 'your_database';

//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}

//Run the Delete statement
$product_name = 'BrandNewProduct';
if ($stmt = mysqli_prepare($conn, "DELETE FROM Products WHERE ProductName = ?")) {
mysqli_stmt_bind_param($stmt, 's', $product_name);
mysqli_stmt_execute($stmt);
printf("Delete: Affected %d rows\n", mysqli_stmt_affected_rows($stmt));
mysqli_stmt_close($stmt);
}

//Close the connection
mysqli_close($conn);
?>