Penggunaan sambungan Mysql
Penggunaan sambungan Mysql
Dalam bab sebelumnya, kami telah mempelajari cara membaca data dalam jadual, yang agak mudah, tetapi Dalam aplikasi sebenar , selalunya perlu membaca data daripada berbilang jadual data.
Dalam bab ini kami akan memperkenalkan cara menggunakan MySQL JOIN untuk menanyakan data dalam dua atau lebih jadual.
Anda boleh menggunakan JOIN Mysql dalam pernyataan SELECT, UPDATE dan DELETE untuk menyertai pertanyaan berbilang jadual.
JOIN dibahagikan secara kasar kepada tiga kategori berikut mengikut fungsi:
INNER JOIN (gabungan dalam, atau gabungan yang setara): Dapatkan dua jadual Rekod perhubungan padanan medan.
KIRI JOIN (kiri sertai): Dapatkan semua rekod dalam jadual kiri, walaupun tiada rekod sepadan yang sepadan dalam jadual kanan.
RIGHT JOIN: Bertentangan dengan LEFT JOIN, ia digunakan untuk mendapatkan semua rekod dalam jadual kanan, walaupun tiada rekod sepadan yang sepadan dalam jadual kiri.
Muat turun struktur pangkalan data dan data yang digunakan dalam bab ini: php.sql.
Gunakan INNER JOIN dalam command prompt
Kami mempunyai dua jadual tcount_tbl dan php_tbl dalam pangkalan data PHP. Data dalam dua jadual data adalah seperti berikut:
Contoh
Cuba contoh berikut:
Data contoh ujian
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)
Seterusnya kami akan Gunakan MySQL INNER JOIN (anda juga boleh meninggalkan INNER dan gunakan JOIN, kesannya adalah sama) untuk menyambung dua jadual di atas untuk membaca nilai medan php_count yang sepadan dengan semua medan php_author dalam jadual php_tbl dalam tcount_tbl jadual:
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)
Pernyataan SQL di atas adalah bersamaan dengan:
WHERE klausa
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
MySQL left join berbeza daripada join. MySQL LEFT JOIN akan membaca semua data dalam jadual kiri, walaupun tiada data yang sepadan dalam jadual kanan.
Contoh
Cuba contoh berikut, menggunakan php_tbl sebagai jadual kiri dan tcount_tbl sebagai jadual kanan, untuk memahami aplikasi 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)
Contoh RIGHT JOIN di atas digunakan, pernyataan ini akan membaca semua data medan yang dipilih dalam jadual data tcount_tbl di sebelah kanan, walaupun tiada nilai medan php_author yang sepadan dalam jadual php_tbl di sebelah kiri.
MySQL RIGHT JOIN
MySQL RIGHT JOIN akan membaca semua data dalam jadual data yang betul, walaupun tiada yang sepadan data dalam jadual sebelah kiri .
Contoh
Cuba contoh berikut, gunakan php_tbl sebagai jadual kiri dan tcount_tbl sebagai jadual kanan, untuk memahami aplikasi 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 ialah digunakan dalam contoh di atas. Pernyataan ini akan membaca semua data medan yang dipilih daripada jadual data tcount_tbl di sebelah kanan, walaupun tiada nilai medan pengguna_pengarang yang sepadan dalam jadual user_tbl di sebelah kiri.
Gunakan JOIN dalam skrip PHP
Gunakan fungsi mysqli_query() dalam PHP untuk melaksanakan pernyataan SQL, anda boleh Gunakan pernyataan SQL yang sama di atas sebagai hujah kepada fungsi mysqli_query().
Cuba contoh berikut:
header("Content-Type: text/html;charset=utf-8");
$dbhost = 'localhost'; // alamat hos pelayan mysql
$dbuser = 'root'; // nama pengguna mysql
$dbpass = 'root'; );
if(! $conn )
{
die('Sambungan gagal: ' . mysqli_error($conn));
}
//Tetapkan pengekodan untuk mengelakkan aksara Cina bercelaru
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('Tidak dapat membaca data: ' . mysqli_error($conn));
}
gema '<h2>Ujian MySQL JOIN laman web PHP Cina<h2> ';
gema '< sempadan jadual ="1"><tr><td>ID Tutorial</td><td>Pengarang</td><td>Bilangan log masuk</ 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 >
Pemberian:
Cadangan tutorial video berkaitan: Konsep dan sambungan MySQL Jenis