Artikel Directory
Hvordan forespørger man data fra en tabel i en MySQL-database ? Forespørgselssætning/kommando/syntaks
MySQL Forespørg data
MySQL-databaser bruger SQL SELECT-sætninger til at forespørge data.
Du kan forespørge data i databasen gennem mysql> kommandopromptvinduet eller gennem et PHP-script.
grammatik
Følgende er den generelle SELECT-syntaks til at forespørge data i en MySQL-database:
SELECT column_name,column_name FROM table_name [WHERE Clause] [OFFSET M ][LIMIT N]
- I forespørgselssætningen kan du bruge en eller flere tabeller, adskille tabellerne med kommaer (,) og bruge WHERE-sætningen til at angive forespørgselsbetingelser.
- SELECT-kommandoen kan læse en eller flere poster.
- Du kan bruge en stjerne (*) til at erstatte andre felter, SELECT-sætningen vil returnere alle feltdata i tabellen
- Du kan bruge WHERE-sætningen til at inkludere enhver betingelse.
- Du kan angive den dataforskydning, ved hvilken SELECT-sætningen starter forespørgslen med OFFSET.Som standard er offset 0.
- Du kan bruge egenskaben LIMIT til at indstille antallet af returnerede poster.
Hent data via kommandoprompt
I det følgende eksempel vil vi bruge SQL SELECT-kommandoen til at hente dataene fra MySQL-datatabellen chenweiliang_tbl:
Instans
Følgende eksempel vil returnere alle poster i datatabellen chenweiliang_tbl:
Læs databladet:
select * from chenweiliang_tbl;
Brug PHP-script til at hente data
Brug PHP-funktionen mysqli_query() og SQL SELECT- kommandoen til at hente data.
Denne funktion bruges til at udføre SQL-kommandoer, og derefter bruges PHP-funktionen mysqli_fetch_array() til at tilgå eller udskrive alle de forespørgte data.
Funktionen mysqli_fetch_array() henter en række fra resultatsættet som et associativt array, et numerisk array eller begge dele og returnerer et array genereret fra den række, der er hentet fra resultatsættet. Hvis der ikke er flere rækker, returnerer den falsk.
Det følgende eksempel læser alle poster fra datatabellen chenweiliang_tbl.
Instans
Prøv følgende eksempel for at vise alle poster i datatabellen chenweiliang_tbl.
Brug parameteren mysqli_fetch_array MYSQL_ASSOC til at hente data:
<?
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);
?>I ovenstående eksempel er hver række af læste poster tildelt variablen $row, og hver værdi udskrives derefter.
Bemærk: Husk at omslutte variablen med krøllede parenteser, hvis du har brug for at bruge den i en streng.
I eksemplet ovenfor er den anden parameter i PHP mysqli_fetch_array()-funktionen MYSQL_ASSOC . Indstilling af denne parameter returnerer et associativt array, og du kan bruge feltnavnet som indeks for arrayet.
PHP tilbyder en anden funktion, `mysqli_fetch_assoc()` , som henter én række fra resultatsættet som et associativt array. Den returnerer et associativt array baseret på de rækker, der er hentet fra resultatsættet; hvis der ikke er flere rækker tilgængelige, returnerer den falsk.
Instans
Prøv følgende eksempel, som bruger funktionen mysqli_fetch_assoc() til at udskrive alle poster i tabellen chenweiliang_tbl:
Brug mysqli_fetch_assoc til at hente data:
<?
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);
?>Du kan også bruge konstanten MYSQL_NUM som den anden parameter i PHP-funktionen mysqli_fetch_array(), som returnerer en matrix af tal.
Instans
Følgende eksempel bruger parameteren MYSQL_NUM til at vise alle poster i tabellen chenweiliang_tbl:
Brug parameteren mysqli_fetch_array MYSQL_NUM til at hente data:
<?
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);
?>Outputresultaterne af de ovenstående tre eksempler er de samme.
hukommelsesfrigivelse
Det er en god praksis at frigøre markørhukommelse, efter at vi har udført en SELECT-sætning.
Hukommelsen kan frigives gennem PHP-funktionen mysqli_free_result().
Følgende eksempel viser brugen af denne funktion.
Instans
Prøv følgende eksempler:
Frigør hukommelse med 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);
?>Forhåbentlig vil artiklen "Sådan forespørges data fra en tabel i en MySQL-database? Forespørgselssætninger/kommandoer/syntaks", som er delt på Chen Weiliangs blog ( https://www.chenweiliang.com/ ), være nyttig for dig.
Del gerne dette artikellink: https://www.chenweiliang.com/cwl-461.html
