מדריך מאמרים
כיצד לבצע שאילתה על נתונים מטבלה במסד נתונים של MySQL ? פקודה/פקודה/תחביר שאילתה
MySQL נתוני שאילתה
מסדי נתונים של MySQL משתמשים בהצהרות SQL SELECT כדי לבצע שאילתות נתונים.
אתה יכול לשאול נתונים במסד הנתונים דרך חלון שורת הפקודה mysql>, או דרך סקריפט PHP.
דקדוק
להלן תחביר ה-SELECT הכללי לשאילתת נתונים במסד נתונים של MySQL:
SELECT column_name,column_name FROM table_name [WHERE Clause] [OFFSET M ][LIMIT N]
- במשפט השאילתה, אתה יכול להשתמש בטבלה אחת או יותר, להפריד בין הטבלאות בפסיקים (,), ולהשתמש במשפט WHERE כדי להגדיר תנאי שאילתה.
- הפקודה SELECT יכולה לקרוא רשומה אחת או יותר.
- אתה יכול להשתמש בכוכבית (*) כדי להחליף שדות אחרים, המשפט SELECT יחזיר את כל נתוני השדות של הטבלה
- אתה יכול להשתמש במשפט WHERE כדי לכלול כל תנאי.
- אתה יכול לציין את היסט הנתונים שבו משפט SELECT מתחיל את השאילתה עם OFFSET.כברירת מחדל, ההיסט הוא 0.
- אתה יכול להשתמש במאפיין LIMIT כדי להגדיר את מספר הרשומות שהוחזרו.
קבל נתונים באמצעות שורת הפקודה
בדוגמה הבאה, נשתמש בפקודה SQL SELECT כדי להשיג את הנתונים של טבלת הנתונים MySQL chenweiliang_tbl:
דוגמא
הדוגמה הבאה תחזיר את כל הרשומות של טבלת הנתונים chenweiliang_tbl:
קרא את גיליון הנתונים:
select * from chenweiliang_tbl;
השתמש בסקריפט PHP כדי לקבל נתונים
השתמש בפונקציית PHP mysqli_query() ובפקודת SQL SELECT כדי לאחזר נתונים.
פונקציה זו משמשת לביצוע פקודות SQL, ולאחר מכן פונקציית ה-PHP mysqli_fetch_array() משמשת לגישה או הפקת כל הנתונים שנשאלו.
הפונקציה mysqli_fetch_array() מאחזרת שורה מקבוצת התוצאות כמערך אסוציאטיבי, מערך מספרי או שניהם, ומחזירה מערך שנוצר מהשורה שנלקחה מקבוצת התוצאות. אם אין עוד שורות, היא מחזירה false.
הדוגמה הבאה קוראת את כל הרשומות מטבלת הנתונים chenweiliang_tbl.
דוגמא
נסה את הדוגמה הבאה כדי להציג את כל הרשומות של טבלת הנתונים chenweiliang_tbl.
השתמש בפרמטר mysqli_fetch_array MYSQL_ASSOC כדי להביא נתונים:
<?
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);
?>בדוגמה שלמעלה, כל שורת רשומות שנקראה מוקצית למשתנה $row, ולאחר מכן כל ערך מודפס.
הערה: זכרו לתחום את המשתנה בסוגריים מסולסלים אם עליכם להשתמש בו במחרוזת.
בדוגמה לעיל, הפרמטר השני של הפונקציה mysqli_fetch_array() ב-PHP הוא MYSQL_ASSOC . הגדרת פרמטר זה מחזירה מערך אסוציאטיבי, וניתן להשתמש בשם השדה כאינדקס של המערך.
PHP מספקת פונקציה נוספת, `mysqli_fetch_assoc()` , אשר מאחזרת שורה אחת מקבוצת התוצאות כמערך אסוציאטיבי. היא מחזירה מערך אסוציאטיבי המבוסס על השורות שנלקחו מקבוצת התוצאות; אם אין שורות נוספות זמינות, היא מחזירה false.
דוגמא
נסו את הדוגמה הבאה, המשתמשת בפונקציה mysqli_fetch_assoc() כדי להפיק את כל הרשומות של הטבלה chenweiliang_tbl:
השתמש ב-mysqli_fetch_assoc כדי להביא נתונים:
<?
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);
?>אתה יכול גם להשתמש בקבוע MYSQL_NUM כפרמטר השני של הפונקציה PHP mysqli_fetch_array() שמחזירה מערך של מספרים.
דוגמא
הדוגמה הבאה משתמשת בפרמטר MYSQL_NUM כדי להציג את כל הרשומות בטבלה chenweiliang_tbl:
השתמש בפרמטר mysqli_fetch_array MYSQL_NUM כדי להביא נתונים:
<?
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);
?>תוצאות הפלט של שלוש הדוגמאות לעיל זהות.
שחרור זיכרון
זה מנהג טוב לשחרר זיכרון סמן לאחר ביצוע הצהרת SELECT.
ניתן לשחרר את הזיכרון באמצעות פונקציית PHP mysqli_free_result().
הדוגמה הבאה מדגימה את השימוש בפונקציה זו.
דוגמא
נסה את הדוגמאות הבאות:
זיכרון חופשי עם 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);
?>אני מקווה שהמאמר "כיצד לבצע שאילתה מטבלה במסד נתונים של MySQL? פקודות שאילתה/פקודות/תחביר" שפורסם בבלוג של צ'ן וייליאנג ( https://www.chenweiliang.com/ ) יהיה לעזר עבורכם.
אל תהססו לשתף את הקישור למאמר הזה: https://www.chenweiliang.com/cwl-461.html
