Utilisation de la connexion Mysql


Utilisation de la connexion Mysql

Dans les chapitres précédents, nous avons appris à lire des données dans un tableau, ce qui est relativement simple, mais dans des applications réelles , il est souvent nécessaire de lire les données de plusieurs tables de données.

Dans ce chapitre, nous présenterons comment utiliser JOIN de MySQL pour interroger des données dans deux tables ou plus.

Vous pouvez utiliser JOIN de Mysql dans les instructions SELECT, UPDATE et DELETE pour joindre des requêtes multi-tables.

JOIN est grossièrement divisé en trois catégories suivantes selon les fonctions :

  • INNER JOIN (inner join, ou jointure équivalente) : Obtenez deux tables Enregistrements des relations de correspondance de champs.

  • LEFT JOIN (jointure gauche) : récupère tous les enregistrements de la table de gauche, même s'il n'y a aucun enregistrement correspondant correspondant dans la table de droite.

  • RIGHT JOIN : Contrairement à LEFT JOIN, il est utilisé pour obtenir tous les enregistrements de la table de droite, même s'il n'y a pas d'enregistrements correspondants dans la table de gauche.

Téléchargez la structure de la base de données et les données utilisées dans ce chapitre : php.sql.

Utilisez INNER JOIN dans l'invite de commande

Nous avons deux tables tcount_tbl et php_tbl dans la base de données PHP. Les données dans les deux tableaux de données sont les suivantes :

Exemple

Essayez l'exemple suivant :

Données de l'instance de test

mysql> use php;
Database changed
mysql> SELECT * FROM tcount_tbl;
+---------------+--------------+
| php_author | php_count |
+---------------+--------------+
| PHP中文网  | 10           |
| PHP.CN    | 20           |
| Google        | 22           |
+---------------+--------------+
3 rows in set (0.01 sec)
 mysql> SELECT * from php_tbl;
+-----------+---------------+---------------+-----------------+
| php_id | php_title  | php_author | submission_date |
+-----------+---------------+---------------+-----------------+
| 1         | 学习 PHP    | PHP中文网  | 2017-04-12      |
| 2         | 学习 MySQL  | PHP中文网   | 2017-04-12      |
| 3         | 学习 Java   | PHP.CN    | 2015-05-01      |
| 4         | 学习 Python | PHP.CN      | 2016-03-06      |
| 5         | 学习 C      | PHP           | 2017-04-05 |
+-----------+---------------+---------------+-----------------+
5 rows in set (0.01 sec)

Ensuite, nous utiliserons INNER JOIN de MySQL (vous pouvez également omettre INNER et utiliser JOIN, l'effet est le même) pour connecter les deux tables ci-dessus afin de lire les valeurs du champ php_count correspondant à tous les champs php_author de la table php_tbl dans le tcount_tbl table :

INNER JOIN

mysql> SELECT a.php_id, a.user_author, b.user_count
 FROM user_tbl a INNER JOIN tcount_tbl b ON a.user_author = b.user_author;
+-------------+-----------------+----------------+
| a.user_id | a.user_author | b.user_count |
+-------------+-----------------+----------------+
| 1           | PHP中文网    | 10             |
| 2           | PHP中文网     | 10             |
| 3           | PHP.CN     | 20             |
| 4           | PHP.CN      | 20             |
+-------------+-----------------+----------------+
 4 rows in set (0.00 sec)

L'instruction SQL ci-dessus est équivalente à :

Clause WHERE

mysql> SELECT a.user_id, a.user_author, b.user_count
 FROM user_tbl a, tcount_tbl b WHERE a.user_author = b.user_author;
+-------------+-----------------+----------------+
| a.user_id | a.user_author | b.user_count |
+-------------+-----------------+----------------+
| 1           | PHP中文网  | 10             |
| 2           | PHP中文网      | 10             |
| 3           |PHP.CN      | 20             |
| 4           | PHP.CN      | 20             |
+-------------+-----------------+----------------+
 4 rows in set (0.01 sec)

img_innerjoin.gif

MySQL LEFT JOIN

La jointure gauche MySQL est différente de la jointure. MySQL LEFT JOIN lira toutes les données du tableau de gauche, même s'il n'y a pas de données correspondantes dans le tableau de droite.

Exemple

Essayez l'exemple suivant, en utilisant php_tbl comme table de gauche et tcount_tbl comme table de droite, pour comprendre l'application de MySQL LEFT JOIN :

RIGHT JOIN
mysql> SELECT a.user_id, a.user_author, b.user_count 
FROM user_tbl a RIGHT JOIN tcount_tbl b ON a.user_author = b.user_author;
+-------------+-----------------+----------------+
| a.user_id | a.user_author | b.user_count |
+-------------+-----------------+----------------+
| 1           | PHP中文网    | 10             |
| 2           | PHP中文网   | 10             |
| 3           | PHP.CN      | 20             |
| 4           | PHP.CN        | 20             |
| NULL        | NULL            | 22             |
+-------------+-----------------+----------------+
5 rows in set (0.01 sec)

L'exemple ci-dessus RIGHT JOIN est utilisé, cette instruction lira toutes les données de champ sélectionnées dans la table de données tcount_tbl à droite, même s'il n'y a pas de valeur de champ php_author correspondante dans la table php_tbl à gauche.

img_leftjoin.gif

MySQL RIGHT JOIN

MySQL RIGHT JOIN lira toutes les données de la bonne table de données, même s'il n'y a pas de correspondance données dans le tableau de gauche.

Exemple

Essayez l'exemple suivant, en utilisant php_tbl comme table de gauche et tcount_tbl comme table de droite, pour comprendre l'application de MySQL RIGHT JOIN :

RIGHT JOIN
mysql> SELECT a.user_id, a.user_author, b.user_count
 FROM user_tbl a RIGHT JOIN tcount_tbl b ON a.user_author = b.user_author;
+-------------+-----------------+----------------+
| a.user_id | a.user_author | b.user_count |
+-------------+-----------------+----------------+
| 1           | PHP中文网   | 10             |
| 2           | PHP中文网    | 10             |
| 3           |PHP.CN     | 20             |
| 4           | PHP.CN    | 20             |
| NULL        | NULL            | 22             |
+-------------+-----------------+----------------+5 rows in set (0.01 sec)

RIGHT JOIN est utilisé dans l'exemple ci-dessus. Cette instruction lira toutes les données de champ sélectionnées dans la table de données tcount_tbl à droite, même s'il n'y a pas de valeur de champ user_author correspondante dans la table user_tbl à gauche.

img_rightjoin.gif

Utilisez JOIN dans le script PHP

Utilisez la fonction mysqli_query() en PHP pour exécuter des instructions SQL, vous pouvez Utilisez la même instruction SQL ci-dessus comme argument de la fonction mysqli_query().

Essayez l'exemple suivant :

<?php
header("Content-Type: text/html;charset=utf-8");

$dbhost = 'localhost'; // adresse de l'hôte du serveur mysql
$dbuser = 'root'; // nom d'utilisateur mysql
$dbpass = 'root'; );
if(! $conn )
{
die('Connection failed: ' . mysqli_error($conn));
}
//Définir l'encodage pour éviter les caractères chinois tronqués
mysqli_query($conn, "set names utf8");

$sql = 'SELECT a.php_id, a.php_author, b.php_count FROM php_tbl a INNER JOIN tcount_tbl b ON a.php_author = b. php_author';

mysqli_select_db( $conn, 'php' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('Impossible de lire les données : ' . mysqli_error($conn));
}
echo '<h2>Site Web chinois PHP MySQL JOIN test<h2> ';
echo '<bordure de la table ="1"><tr><td>ID du didacticiel</td><td>Auteur</td><td>Nombre de connexions</ td></tr>';
while($row = mysqli_fetch_array($retval, MYSQL_ASSOC))
{
echo "<tr><td> {$row['php_id'] }</td> ".
" "<td>{$row['php_author']} </td> ".
" " ;/td> ".
" "</tr>";
}
echo '</table>';
mysqli_close($conn >
);

Rendu :

Image 3.jpg

Recommandations du didacticiel vidéo associé : Concepts de connexion MySQL et Types