Maison  >  Article  >  développement back-end  >  Méthode MySQLI pour faire fonctionner la base de données MySQL

Méthode MySQLI pour faire fonctionner la base de données MySQL

不言
不言original
2018-06-06 09:26:192782parcourir

Cet article présente principalement la méthode MySQLI d'exploitation de la base de données MySQL avec PHP. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Trois façons de fonctionner. MySQL avec PHP Une méthode

MySQL

connexion non permanente, à chaque utilisation de la base de données, un nouveau processus sera ouvert,

Inconvénients :
Les performances sont faibles et seront abandonnées après PHP5.0.

MySQLi

Connexion permanente, réduisant la pression du serveur, ne prend en charge que MySQL

Inconvénients :
Prenant de la mémoire

PDO (Recommandé)

peut réaliser les fonctions communes de MySQLi et prend en charge la plupart des bases de données.

Méthode MySQL (orientée objet)

Utilisation de base :

1) Se connecter à la base de données

$mysqli = new mysqli(‘host’,‘username’,‘password’,‘database’)

2 ) Exécuter l'instruction SQL

$mysqli -> query($sql);

3) Obtenez le résultat

$result -> fetch_array([MYSQLI_ASSOC])     一个
$result -> fetch_assoc()                   一个

$result -> fetch_all([MYSQLI_ASSOC])       全部

La méthode 1 est par défaut 索引数组 et devient 关联数组 après l'ajout de paramètres.

La méthode 2 est équivalente à la méthode 1 plus les paramètres.

4) Fermer la connexion

$mysqli -> close();

Exemple :

<?php

// MySQLi增删改例子

// MySQLi方式连接数据库
$mysqli = new mysqli(&#39;localhost&#39;,&#39;root&#39;,&#39;123456789&#39;,&#39;test&#39;);

// 执行SQL语句
// 使用utf-8编码
$mysqli -> query(&#39;set names utf8&#39;);

// 插入
//$result = $mysqli -> query("INSERT users(name,money) VALUES(&#39;甜筒&#39;,4) ");
//$result = $mysqli -> query("INSERT users(name,money) VALUES(&#39;麦辣鸡腿堡&#39;,16) ");

// 修改
//$result = $mysqli -> query("UPDATE users SET `name`= &#39;麦旋风&#39; WHERE `id` = 2");

// 删除
//$result = $mysqli -> query("DELETE FROM users WHERE `id` = 5");

//var_dump($result);

/*********************查询*****************/ 
$result = $mysqli -> query("SELECT * FROM users");
// 获取结果集
$data = $result -> fetch_all(MYSQLI_ASSOC);

var_dump($data);

Contrôle des transactions

Une transaction consiste à combiner plusieurs tâches logiques en une seule exécution Opérations de base de données de l'unité (succès ou échec total).

1) Ouvrez la transaction

$mysqli -> autocommit(false)

Cette méthode entraînera la soumission immédiate de la transaction, le paramètre false doit donc être renseigné.

2) Annulation de la transaction

$mysqli -> rollback()

S'il y a des erreurs dans les données, vous pouvez utiliser cette méthode pour restaurer les données.

3) Soumission de la transaction

$mysqli -> commit()

4) Fermer la connexion

$mysqli -> close()

Remarque :

Lorsque nous utilisons query() pour exécuter des instructions SQL Parfois, il ne se soucie pas des modifications apportées à la base de données, mais uniquement de savoir si l'instruction SQL est fausse.

Nous ne pouvons donc pas nous fier à la valeur de retour de query() pour déterminer si l'opération réussit ou non.

Pour utiliser le nombre de lignes concernées pour déterminer :

$mysqli -> affected_rows

Instance

 query('set names utf8');


// 开启事务
$mysqli -> autocommit(false);

//SQL
$sql1 = "UPDATE users SET `money`=`money`+1  WHERE `id` = 1";
$sql2 = "UPDATE users SET `money`=`money`-1  WHERE `id` = 11";

// 执行SQL语句
$result = $mysqli -> query($sql1);
$r1 = $mysqli -> affected_rows;

$result = $mysqli -> query($sql2);
$r2 = $mysqli -> affected_rows;

if($r1 > 0 && $r2 > 0){
    // 提交事务
    $mysqli -> commit();
    echo '操作成功';
}else{
    // 事务回滚
    $mysqli -> rollback();
    echo '操作失败';
}

Prétraitement

Prétraitement, soumettez d'abord l'instruction SQL à Côté serveur, une précompilation est effectuée.

Lorsque le client exécute une instruction SQL, il lui suffit de télécharger les paramètres d'entrée

Si plusieurs lectures ou stockages sont impliqués, l'efficacité est supérieure à celle des opérations d'exécution SQL ordinaires ;

1) $sql = « ??? »

Le paramètre dans la VALUE de l'instruction SQL est remplacé par un point d'interrogation.

2) Créer un objet précompilé

 $stmt = $mysqli -> prepare($sql)

3) Affectation des paramètres

$stmt -> bind_param(&#39;参数类型&#39;, 参数1, 参数2...)

Description du type de paramètre :
string-s int-i double-d bool-b

Rappel spécial :
Écrivez les types de paramètres dans l'ordre sans espaces ni virgules. Par exemple, le paramètre 1 est une chaîne et un paramètre. 2 est bool, écrit comme ceci :
$stmt -> bind_param('si', 参数1, 参数2)

4) Ensemble de résultats de liaison variable (cette étape n'est requise que pour les requêtes, ignorez cette étape pour d'autres opérations)

$stmt -> bind_result()

Note spéciale :
La variable de bind_result correspond au nom du champ dans l'instruction select, alors assurez-vous de faire attention à la quantité et à la commande ! ! !

5) Exécutez le code

$stmt -> execute()

6) Enregistrez l'enregistrement de la requête dans le programme PHP (l'opération de requête est facultative)

$stmt->store_result()

Veuillez consulter le lien ci-dessous pour plus de détails

Analyse détaillée

7) Obtenez les résultats de chaque enregistrement

$stmt ->fetch()

Exemple

 query('set names utf8');

// SQL语句
$sql = "SELECT * FROM users WHERE id>? ";

// 创建预编译对象
$stmt = $mysqli -> prepare($sql);

// 参数绑定
$id = 1;
$stmt -> bind_param('i',$id);

// 绑定结果集   参数要和表的参数一致
$stmt -> bind_result($id,$name,$money,$age);

// 执行SQL语句
$stmt -> execute();

// 执行SQL语句
$stmt->store_result();

// 接收结果集
while($stmt -> fetch()){
    $data[] = [
        'id' => $id,
        'name' => $name,
        'money' => $money
    ];
}

var_dump($data);

Recommandations associées :

Base de données d'opération PHP : sélectionnez l'opération opération

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