پایگاه داده MySQL چگونه داده ها را در جدول پرس و جو می کند؟بیانیه پرس و جو / فرمان / نحو

چگونه می‌توان داده‌ها را از یک جدول در پایگاه داده MySQL پرس و جو کرد ؟ دستور/دستور پرس و جو/نحو آن

خروجی داده های پرس و جو

پایگاه های داده MySQL از دستورات SQL SELECT برای پرس و جوی داده ها استفاده می کنند.

می توانید از طریق پنجره خط فرمان mysql> یا از طریق یک اسکریپت PHP، داده های موجود در پایگاه داده را پرس و جو کنید.

دستور زبان

در زیر دستور کلی SELECT برای جستجوی داده ها در پایگاه داده MySQL آمده است:

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • در دستور query می توانید از یک یا چند جدول استفاده کنید، جداول را با کاما (،) جدا کنید و از دستور WHERE برای تنظیم شرایط پرس و جو استفاده کنید.
  • دستور SELECT می تواند یک یا چند رکورد را بخواند.
  • می توانید از یک ستاره (*) برای جایگزینی فیلدهای دیگر استفاده کنید، دستور SELECT تمام داده های فیلد جدول را برمی گرداند.
  • می توانید از عبارت WHERE برای درج هر شرطی استفاده کنید.
  • می توانید افست داده ای را مشخص کنید که در آن عبارت SELECT پرس و جو را با OFFSET شروع می کند.به طور پیش فرض افست 0 است.
  • می توانید از ویژگی LIMIT برای تنظیم تعداد رکوردهای برگشتی استفاده کنید.

دریافت اطلاعات از طریق خط فرمان

در مثال زیر، از دستور SQL SELECT برای به دست آوردن داده های جدول داده MySQL chenweiliang_tbl استفاده می کنیم:

نمونه، مثال

مثال زیر تمام رکوردهای جدول داده chenweiliang_tbl را برمی گرداند:

دیتاشیت را بخوانید:

select * from chenweiliang_tbl;

برای دریافت اطلاعات از اسکریپت PHP استفاده کنید

برای بازیابی داده‌ها از تابع mysqli_query() در PHP و دستور SELECT در SQL استفاده کنید.

این تابع برای اجرای دستورات 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

برای کشف ترفندهای مخفی بیشتر🔑، به کانال تلگرام ما بپیوندید!

اگر دوست داشتید به اشتراک بگذارید و لایک کنید! اشتراک گذاری ها و لایک های شما انگیزه ادامه دار ماست!

 

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

رفته به بالا