Maison >développement back-end >tutoriel php >Compétences de base en fonctionnement de base de données PHP+MariaDB

Compétences de base en fonctionnement de base de données PHP+MariaDB

jacklove
jackloveoriginal
2018-06-22 17:16:515207parcourir

Cet article présente principalement les compétences de base du fonctionnement de la base de données PHP+MariaDB, et résume et analyse la connexion et le jugement de la base de données PHP+MariaDB sous forme d'exemples, ainsi que les compétences de mise en œuvre et les précautions de connexion, de gestion et de suppression des utilisateurs. et d'autres opérations connexes basées sur PHP+MariaDB. Les amis dans le besoin peuvent se référer à

Les exemples de cet article résument les compétences de base du fonctionnement de la base de données PHP+MariaDB. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :

PHP+MySQL est une combinaison relativement courante puisque subjectivement, je n'aime pas beaucoup Oracle, et après l'acquisition de MySQL, quelques changements. se sont produits dans mes os, donc après avoir remplacé MariaDB, j'adhère toujours à la croyance open source originale de MySQL. Ils constituent essentiellement le cœur de MySQL, donc tous les codes d'opération de base de données suivants peuvent être utilisés directement dans MySQL.

Après avoir configuré l'environnement de base de PHP+Apache et installé la base de données MySQL la nuit, j'ai écrit le code de connexion à la base de données le plus simple, et le résultat était l'erreur classique suivante : Erreur fatale : Classe 'mysqli ' introuvable

<?php
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
?>

En fait, ce problème est relativement simple. L'erreur renvoyée par le moteur PHP montre que mysqli n'a pas été chargé. correctement. La plupart d'entre eux Les problèmes sont tous survenus dans la configuration du fichier php.ini. Le point-virgule par défaut devant l'élément de configuration "extension=php_mysqli.dll" n'a pas été supprimé. Je n'ai pas commis cette erreur. Il y a aussi le fichier php_mysqli.dll dans le répertoire ext du chemin d'installation de PHP. Alors, où est survenu le problème ? Le problème devrait toujours se produire au mauvais endroit dans le fichier php.ini. Après quelques lectures, j'ai constaté que "extension_dir = "ext"" n'a pas été modifié. Je n'y pensais pas beaucoup à l'époque, pensant que le moteur PHP pouvait trouver automatiquement ce chemin relatif. Mais ensuite j'y ai réfléchi, le moteur PHP est chargé par Apache, et Apache ne connaît pas cette relation relative. Changeons simplement cet endroit en chemin absolu et c'est OK. En fait, vous pouvez écrire ce code avant ce code pour voir si le composant mysqli a été chargé. Cette méthode convient au pré-chargement d'autres composants.

if (extension_loaded(&#39;mysqli&#39;))
{
  echo &#39;yes&#39;;
}
else
{
  echo &#39;no&#39;;
}

Ce qui suit utilise un enregistrement d'utilisateur et une connexion système pour enregistrer la méthode de fonctionnement la plus élémentaire de PHP+MySQL.

1. Créer une base de données, des tables et des utilisateurs.

DROP DATABASE IF EXISTS `test`;
CREATE DATABASE `test`
USE `test`;
DROP TABLE IF EXISTS `tbl_user`;
CREATE TABLE `tbl_user` (
 `username` varchar(32) NOT NULL default &#39;&#39;,
 `password` varchar(32) NOT NULL default &#39;&#39;,
 PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

2. Créez des pages html d'inscription et de connexion, respectivement register.html et login.html. Comme le montre l'image ci-dessous :

3. Code d'inscription et de connexion :

register_do.php

<?php
  $username = $_POST[&#39;username&#39;];
  $password = $_POST[&#39;password&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $query = "select * from tbl_user where username = &#39;" . $username . "&#39;";
  echo &#39;<p>&#39; . $query;
  $result = $db->query($query);
  if ($result)
  {
    echo &#39;<p>&#39; . &#39;The user &#39;. $username .&#39; exist&#39;;
    echo &#39;<p>&#39; . &#39;<a href="register.html" rel="external nofollow" rel="external nofollow" >Back to register</a>&#39;;
  }
  else
  {
    $query = "insert into tbl_user values (&#39;". $username ."&#39;, &#39;". $password ."&#39;)";
    echo &#39;<p>&#39; . $query;
    $result = $db->query($query);
    if ($result)
    {
      echo &#39;<p>&#39; . &#39;<a href="register.html" rel="external nofollow" rel="external nofollow" >Register successful</a>&#39;;
    }
  }
?>

login_do.php

<?php
  $username = $_POST[&#39;username&#39;];
  $password = $_POST[&#39;password&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $query = "select * from tbl_user where username = &#39;" . $username . "&#39; and password = &#39;" . $password . "&#39;";
  echo &#39;<p>&#39; . $query;
  $result = $db->query($query);
  if ($result->num_rows)
  {
    echo &#39;<p>&#39; . &#39;<a href="login.html" rel="external nofollow" rel="external nofollow" >Login successful</a>&#39;;
  }
  else
  {
    echo &#39;<p>&#39; . &#39;<a href="login.html" rel="external nofollow" rel="external nofollow" >Login failed</a>&#39;;
  }
?>

userlist.php

<?php
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  echo &#39;<p>&#39; . &#39;All user as follows:&#39;;
  $query = "select * from tbl_user order by username";
  if ($result = $db->query($query))
  {
    while ($row = $result->fetch_assoc())
    {
      echo &#39;<p>&#39; . &#39;Username : &#39; . $row[&#39;username&#39;] . &#39;  <a href="userdelete.php?username=&#39; . $row[&#39;username&#39;] . &#39;" rel="external nofollow" >delete</a>&#39;;
    }
  }
?>

4. L'effet d'affichage final de la page est le suivant :

5. Supprimer le code de l'utilisateur :

userdelete.php

<?php
  $username = $_GET[&#39;username&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $query = "delete from tbl_user where username = &#39;" . $username . "&#39;";
  echo $query;
  if ($result = $db->query($query))
  {
    echo &#39;<p>&#39; . &#39;Delete user &#39; . $username . &#39; successful&#39;;
  }
  else
  {
    echo &#39;<p>&#39; . &#39;Delete user &#39; . $username . &#39; failed&#39;;
  }
  echo &#39;<p>&#39; . &#39;<a href="userlist.php" rel="external nofollow" >Back to user list</a>&#39;;
?>

Préparer le prétraitement

1 La page d'ajout de livre est comme indiqué ci-dessous. ( bookadd.html) :

2. Le script de création de table est le suivant :

DROP DATABASE IF EXISTS `test`;
CREATE DATABASE IF NOT EXISTS `test`;
USE `test`;
DROP TABLE IF EXISTS `tbl_book`;
CREATE TABLE IF NOT EXISTS `tbl_book` (
 `isbn` varchar(32) NOT NULL,
 `title` varchar(32) NOT NULL,
 `author` varchar(32) NOT NULL,
 `price` float NOT NULL,
 PRIMARY KEY (`isbn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

3. Le code de traitement logique ajouté est le suivant (bookadd_do.php) : Ce qui nécessite une attention particulière ici est la phrase "$db->query("set names utf-8")", ce qui signifie que lors de l'écriture des données dans la base de données, l'encodage et le décodage UTF-8 sont utilisés. pour afficher le codage des opérations sur les tables de base de données. Le décodage est configuré pour éviter les caractères chinois tronqués. J'enregistrerai un article spécifiquement sur ce point technique plus tard.

<?php
  $isbn = $_POST[&#39;isbn&#39;];
  $title = $_POST[&#39;title&#39;];
  $author = $_POST[&#39;author&#39;];
  $price = $_POST[&#39;price&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $db->query("set names utf-8"); //特别注意这句话
  $stmt = $db->stmt_init();
  $stmt->prepare("insert into tbl_book values (?,?,?,?)");
  $stmt->bind_param("sssd", $isbn, $title, $author, $price);
  $stmt->execute();
  echo &#39;<p>&#39; . &#39;Affect rows is &#39; . $stmt->affected_rows;
  echo &#39;<p>&#39; . &#39;<a href="booklist.php" rel="external nofollow" >Go to book list page</a>&#39;;
?>

4. Le code logique pour afficher les informations du livre est le suivant Faites également attention à la phrase « $db->query("set names utf-8") » :

<.>

<?php
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $db->query("set names utf-8"); //特别注意这句话
  $stmt = $db->stmt_init();
  $stmt->prepare("select * from tbl_book");
  $stmt->bind_result($isbn, $title, $author, $price);
  $stmt->execute();
  while($stmt->fetch())
  {
    echo &#39;ISBN : &#39; . $isbn . &#39;<p>&#39;;
    echo &#39;Title : &#39; . $title . &#39;<p>&#39;;
    echo &#39;Author : &#39; . $author . &#39;<p>&#39;;
    echo &#39;Price : &#39; . $price . &#39;<p>&#39;;
    echo &#39;<p>&#39; . &#39;-----------------------------&#39; . &#39;<p>&#39;;
  }
?>

5. La page affichée est la suivante :

D'accord, la partie la plus basique est enregistrée. ici. Le moteur PHP fournit des méthodes de fonctionnement de base de données très pratiques, mais le développement n'est en aucun cas aussi simple. Diverses exceptions doivent être soigneusement prises en compte pour savoir comment les détecter et les gérer. La conception de bases de données est également un sujet très intéressant.

Articles qui pourraient vous intéresser :

Classe d'opération de base de données PHP basée sur pdo

Contenu lié à la séparation lecture-écriture MySQL implémentée par PHP

Comment PHP implémente la méthode de compression de plusieurs fichiers au format zip et de leur téléchargement local

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