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)
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.
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.
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 :
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 :
Recommandations du didacticiel vidéo associé : Concepts de connexion MySQL et Types