Kako MySQL baza podataka traži podatke u tabeli?Izjava upita/naredba/sintaksa

MySQL baza podatakaKako izvršiti upit za podatke u tabeli?Izjava/naredba/sintaksa upita

MySQL Podaci upita

MySQL baze podataka koriste SQL SELECT izraze za upite podataka.

Možete tražiti podatke u bazi podataka kroz prozor komandne linije mysql> ili putem PHP skripte.

gramatika

Slijedi opća sintaksa SELECT za upite podataka u MySQL bazi podataka:

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • U izrazu upita možete koristiti jednu ili više tabela, odvojiti tabele zarezima (,) i koristiti naredbu WHERE za postavljanje uslova upita.
  • Komanda SELECT može pročitati jedan ili više zapisa.
  • Možete koristiti zvjezdicu (*) da zamijenite druga polja, naredba SELECT će vratiti sve podatke polja u tablici
  • Možete koristiti naredbu WHERE da uključite bilo koji uvjet.
  • Možete odrediti pomak podataka na kojem izraz SELECT započinje upit sa OFFSET.Podrazumevano je pomak 0.
  • Možete koristiti svojstvo LIMIT za postavljanje broja vraćenih zapisa.

Dobijte podatke putem komandne linije

U sljedećem primjeru koristit ćemo naredbu SQL SELECT za dobivanje podataka MySQL tablice podataka chenweiliang_tbl:

Instance

Sljedeći primjer će vratiti sve zapise tablice podataka chenweiliang_tbl:

Pročitajte tablicu sa podacima:

select * from chenweiliang_tbl;

Koristite PHP skriptu da dobijete podatke

koristeći PHP funkcije mysqli_query() i SQL SELECT komandu za dobijanje podataka.

Ova funkcija se koristi za izvršavanje SQL naredbi, a zatim prosljeđivanje PHP funkcija mysqli_fetch_array() za korištenje ili izlaz podataka za sve upite.

mysqli_fetch_array() Funkcija dohvaća red iz skupa rezultata kao asocijativni niz, ili niz brojeva, ili oboje. Vraća niz generiran iz redova dohvaćenih iz skupa rezultata, ili false ako nema više redaka.

Sljedeći primjer čita sve zapise iz tablice podataka chenweiliang_tbl.

Instance

Pokušajte sljedeći primjer da prikažete sve zapise tablice podataka chenweiliang_tbl.

Koristite parametar mysqli_fetch_array MYSQL_ASSOC za dohvaćanje podataka:

<?
php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
 
$sql = 'SELECT chenweiliang_id, chenweiliang_title, 
 chenweiliang_author, submission_date
 FROM chenweiliang_tbl';
 
mysqli_select_db( $conn, 'chenweiliang' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
 die('无法读取数据: ' . mysqli_error($conn));
}
echo '<h2>陈沩亮博客 mysqli_fetch_array 测试<h2>';
echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQL_ASSOC))
{
 echo "<tr><td> {$row['chenweiliang_id']}</td> ".
 "<td>{$row['chenweiliang_title']} </td> ".
 "<td>{$row['chenweiliang_author']} </td> ".
 "<td>{$row['submission_date']} </td> ".
 "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

 

U gornjem primjeru, svaki red pročitanih zapisa dodjeljuje se varijabli $row, a zatim se svaka vrijednost ispisuje.

Napomena:Zapamtite da ako trebate koristiti varijablu u nizu, stavite varijablu u vitičaste zagrade.

U gornjem primjeru, drugi parametar funkcije PHP mysqli_fetch_array() je MYSQL_ASSOC, postavite ovaj parametar za upit rezultata za vraćanje asocijativnog niza, možete koristiti ime polja kao indeks niza.

PHP pruža još jednu funkciju mysqli_fetch_assoc(), funkcija uzima red iz skupa rezultata kao asocijativni niz.Vraća asocijativni niz generiran iz redova uzetih iz skupa rezultata ili netačno ako nema više redaka.

Instance

Isprobajte sljedeći primjer koji koristi mysqli_fetch_assoc() funkcija za izlaz svih zapisa tablice podataka chenweiliang_tbl:

Koristite mysqli_fetch_assoc da dohvatite podatke:

<?
php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
 
$sql = 'SELECT chenweiliang_id, chenweiliang_title, 
 chenweiliang_author, submission_date
 FROM chenweiliang_tbl';
 
mysqli_select_db( $conn, 'chenweiliang' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
 die('无法读取数据: ' . mysqli_error($conn));
}
echo '<h2>陈沩亮博客 mysqli_fetch_assoc 测试<h2>';
echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>';
while($row = mysqli_fetch_assoc($retval))
{
 echo "<tr><td> {$row['chenweiliang_id']}</td> ".
 "<td>{$row['chenweiliang_title']} </td> ".
 "<td>{$row['chenweiliang_author']} </td> ".
 "<td>{$row['submission_date']} </td> ".
 "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

Također možete koristiti konstantu MYSQL_NUM kao drugi parametar PHP mysqli_fetch_array() funkcije, koja vraća niz brojeva.

Instance

Sljedeći primjeri koriste MYSQL_NUM Parametar prikazuje sve zapise tablice podataka chenweiliang_tbl:

Koristite parametar mysqli_fetch_array MYSQL_NUM za dohvaćanje podataka:

<?
php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
 
$sql = 'SELECT chenweiliang_id, chenweiliang_title, 
 chenweiliang_author, submission_date
 FROM chenweiliang_tbl';
 
mysqli_select_db( $conn, 'chenweiliang' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
 die('无法读取数据: ' . mysqli_error($conn));
}
echo '<h2>陈沩亮博客 mysqli_fetch_array 测试<h2>';
echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQL_NUM))
{
 echo "<tr><td> {$row[0]}</td> ".
 "<td>{$row[1]} </td> ".
 "<td>{$row[2]} </td> ".
 "<td>{$row[3]} </td> ".
 "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

Izlazni rezultati gornja tri primjera su isti.


oslobađanje memorije

Dobra je praksa osloboditi memoriju kursora nakon što smo izvršili SELECT naredbu.

Memorija se može osloboditi putem PHP funkcije mysqli_free_result().

Sljedeći primjer pokazuje upotrebu ove funkcije.

Instance

Isprobajte sljedeće primjere:

Slobodna memorija sa mysqli_free_result:

<?
php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
 
$sql = 'SELECT chenweiliang_id, chenweiliang_title, 
 chenweiliang_author, submission_date
 FROM chenweiliang_tbl';
 
mysqli_select_db( $conn, 'chenweiliang' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
 die('无法读取数据: ' . mysqli_error($conn));
}
echo '<h2>陈沩亮博客 mysqli_fetch_array 测试<h2>';
echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQL_NUM))
{
 echo "<tr><td> {$row[0]}</td> ".
 "<td>{$row[1]} </td> ".
 "<td>{$row[2]} </td> ".
 "<td>{$row[3]} </td> ".
 "</tr>";
}
echo '</table>';
// 释放内存
mysqli_free_result($retval);
mysqli_close($conn);
?>
 

Komentari

Vaša email adresa neće biti objavljena. Koriste se obavezna polja * Oznaka

Dođite na vrh