Maison  >  Article  >  développement back-end  >  Résumé des compétences de base pour le mémo sur les opérations de base de données PHP+MariaDB

Résumé des compétences de base pour le mémo sur les opérations de base de données PHP+MariaDB

不言
不言original
2018-06-01 11:09:501711parcourir

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 pour la connexion, la gestion et la 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. Je le partage avec vous 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 MySQL a subi quelques changements depuis sa création. acquis par celui-ci, 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 D'après l'erreur renvoyée par le moteur PHP, vous savez que mysqli a. 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 morceau de 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. 🎜> 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 "

", 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.

$db->query("set names utf-8")

<?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.

Recommandations associées :

Classe d'opération de base de données basée sur PHP pdo [peut prendre en charge MySQL, SQLserver et Oracle]


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