Artikola Adresaro
Kiel pridemandi datumojn el tabelo en MySQL-datumbazo ? Pridemanda deklaro/komando/sintakso
MySQL Pridemandu datumojn
MySQL-datumbazoj uzas SQL SELECT deklarojn por pridemandi datumojn.
Vi povas demandi datumojn en la datumbazo per la fenestro de komando mysql> aŭ per PHP-skripto.
gramatiko
La sekvanta estas la ĝenerala SELECT-sintakso por pridemandi datumojn en MySQL-datumbazo:
SELECT column_name,column_name FROM table_name [WHERE Clause] [OFFSET M ][LIMIT N]
- En la demanda deklaro, vi povas uzi unu aŭ plurajn tabelojn, apartigi la tabelojn per komoj (,), kaj uzi la WHERE deklaron por agordi demandajn kondiĉojn.
- La komando SELECT povas legi unu aŭ pli da registroj.
- Vi povas uzi asteriskon (*) por anstataŭigi aliajn kampojn, la SELECT deklaro resendos ĉiujn kampodatumojn de la tabelo
- Vi povas uzi la deklaron WHERE por inkluzivi ajnan kondiĉon.
- Vi povas specifi la datuman ofseton ĉe kiu la deklaro SELECT komencas la demandon per OFFSET.Defaŭlte la ofseto estas 0.
- Vi povas uzi la posedaĵon LIMIT por agordi la nombron da rekordoj redonitaj.
Akiru datumojn per komanda prompto
En la sekva ekzemplo, ni uzos la komandon SQL SELECT por akiri la datumojn de la MySQL-datumtabelo chenweiliang_tbl:
ekzemplo
La sekva ekzemplo resendos ĉiujn rekordojn de la datumtabelo chenweiliang_tbl:
Legu la datumfolion:
select * from chenweiliang_tbl;
Uzu PHP-skripton por akiri datumojn
Uzu la PHP-funkcion mysqli_query() kaj la SQL- komandon SELECT por preni datumojn.
Ĉi tiu funkcio estas uzata por plenumi SQL-komandojn, kaj poste la PHP-funkcio mysqli_fetch_array() estas uzata por aliri aŭ eligi ĉiujn pridemanditajn datumojn.
La funkcio mysqli_fetch_array() prenas vicon el la rezultaro kiel asociecan tabelon, numeran tabelon, aŭ ambaŭ, kaj redonas tabelon generitan el la vico prenita el la rezultaro. Se ne plu estas vicoj, ĝi redonas malveron.
La sekva ekzemplo legas ĉiujn rekordojn de la datumtabelo chenweiliang_tbl.
ekzemplo
Provu la sekvan ekzemplon por montri ĉiujn registrojn de la datumtabelo chenweiliang_tbl.
Uzu la parametron mysqli_fetch_array MYSQL_ASSOC por preni datumojn:
<?
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);
?>En la supra ekzemplo, ĉiu vico de rekordoj legitaj estas asignita al la variablo $row, kaj tiam ĉiu valoro estas presita.
Noto: Memoru enfermi la variablon en krampojn se vi bezonas uzi ĝin en ĉeno.
En la supra ekzemplo, la dua parametro de la PHP-funkcio mysqli_fetch_array() estas MYSQL_ASSOC . Agordi ĉi tiun parametron redonas asocian tabelon, kaj vi povas uzi la kamponomon kiel la indekson de la tabelo.
PHP provizas alian funkcion, `mysqli_fetch_assoc()` , kiu prenas unu vicon el la rezultaro kiel asociecan tabelon. Ĝi redonas asociecan tabelon bazitan sur la vico prenita el la rezultaro; se ne plu linioj estas haveblaj, ĝi redonas `false`.
ekzemplo
Provu la jenan ekzemplon, kiu uzas la funkcion mysqli_fetch_assoc() por eligi ĉiujn rikordojn de la tabelo chenweiliang_tbl:
Uzu mysqli_fetch_assoc por preni datumojn:
<?
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);
?>Vi ankaŭ povas uzi la konstantan MYSQL_NUM kiel la duan parametron de la PHP mysqli_fetch_array() funkcio, kiu resendas tabelon de nombroj.
ekzemplo
La jena ekzemplo uzas la parametron MYSQL_NUM por montri ĉiujn rikordojn en la tabelo chenweiliang_tbl:
Uzu la parametron mysqli_fetch_array MYSQL_NUM por preni datumojn:
<?
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);
?>La produktaĵrezultoj de ĉi-supraj tri ekzemploj estas la samaj.
memorliberigo
Estas bona praktiko liberigi kursoran memoron post kiam ni ekzekutis SELECT deklaron.
La memoro povas esti liberigita per la PHP-funkcio mysqli_free_result().
La sekva ekzemplo montras la uzon de ĉi tiu funkcio.
ekzemplo
Provu la sekvajn ekzemplojn:
Senpaga memoro kun 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);
?>Espereble, la artikolo "Kiel pridemandi datumojn el tabelo en MySQL-datumbazo? Pridemandaj deklaroj/komandoj/sintakso" dividita en la blogo de Chen Weiliang ( https://www.chenweiliang.com/ ) estos helpema al vi.
Bonvolu kunhavigi la ligilon al ĉi tiu artikolo: https://www.chenweiliang.com/cwl-461.html
