Maison >développement back-end >Problème PHP >Comment exécuter une requête en php

Comment exécuter une requête en php

WBOY
WBOYoriginal
2023-05-06 15:07:07708parcourir

En PHP, la requête est une opération très fréquemment utilisée pour obtenir ou vérifier les données requises dans la base de données. Il s'agit d'une base importante car elle nous permet d'accéder au contenu de la base de données.

Dans cet article, nous explorerons comment exécuter des requêtes en PHP pour rendre nos applications Web plus puissantes.

1. Connectez-vous à la base de données

Avant de démarrer la requête, nous devons établir une connexion à la base de données. Vous pouvez utiliser l'extension PDO (PHP Data Objects) ou mysqli.

Utilisation de PDO :

$host = 'localhost';
$dbname = 'mydatabase';
$user = 'myusername';
$pass = 'mypassword';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
    //设置错误模式为异常处理
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully!";
} catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}

Utilisation de mysqli :

$host = 'localhost';
$dbname = 'mydatabase';
$user = 'myusername';
$pass = 'mypassword';

// 创建连接
$conn = new mysqli($host, $user, $pass, $dbname);

// 检测连接
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully!";

2. Exécution de la requête

Une fois la connexion à la base de données établie, nous pouvons exécuter la requête. Voici un exemple de la façon d'effectuer une requête SELECT en utilisant PDO et mysqli :

Utilisation de PDO :

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

$sql = "SELECT * FROM mytable";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 输出结果
print_r($result);

Utilisation de mysqli :

$conn = new mysqli($host, $user, $pass, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM mytable";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();

3. Paramètres de liaison

Lors de l'exécution d'une requête, nous souhaitons généralement que la requête ne renvoie que des résultats. qui correspondent à certains critères. Dans ce cas, nous devons utiliser des paramètres de liaison pour séparer les conditions de requête de l'instruction de requête.

Voici un exemple de liaison de paramètres utilisant PDO et mysqli :

Utilisation de PDO :

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

$sql = "SELECT * FROM mytable WHERE name = :name";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':name', $name);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 输出结果
print_r($result);

Utilisation de mysqli :

$conn = new mysqli($host, $user, $pass, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$name = "John Doe";

$sql = "SELECT * FROM mytable WHERE name = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $name);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();

4. Requêtes précompilées

Les requêtes précompilées sont un moyen d'optimiser les requêtes de base de données qui nous permettent d'utiliser des espaces réservés dans les requêtes pour éviter les attaques par injection SQL.

Voici un exemple de requête précompilée utilisant PDO et mysqli :

Utilisation de PDO :

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

$sql = "SELECT * FROM mytable WHERE name = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$name]);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 输出结果
print_r($result);

Utilisation de mysqli :

$conn = new mysqli($host, $user, $pass, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$name = "John Doe";

$sql = "SELECT * FROM mytable WHERE name = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $name);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();

5. Traitement de l'ensemble de résultats

Une fois la requête exécutée, nous devons traiter l'ensemble de résultats, ce qui signifie les formater dans un format approprié pour une utilisation dans les applications Web, telles que des tableaux ou des chaînes JSON.

Voici un exemple de traitement d'un ensemble de résultats :

Utilisation de PDO :

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

$sql = "SELECT * FROM mytable";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 格式化为JSON字符串
echo json_encode($result);

Utilisation de mysqli :

$conn = new mysqli($host, $user, $pass, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM mytable";
$result = $conn->query($sql);

// 格式化为数组
$data = array();
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $data[] = $row;
    }
}

// 格式化为JSON字符串
echo json_encode($data);

$conn->close();

Résumé

L'exécution de requêtes en PHP est une base importante et fréquemment utilisée dans les applications Web. Nous pouvons utiliser l'extension PDO ou mysqli pour établir une connexion à la base de données et utiliser la requête SELECT pour récupérer les données dont nous avons besoin. Lorsque les conditions de requête nécessitent des paramètres liés, nous devons utiliser des paramètres liés et des requêtes précompilées pour garantir la sécurité des requêtes. Enfin, nous devons traiter les ensembles de résultats et les formater dans le format de données d'application Web approprié.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn