امروز چهارشنبه ۱۴۰۰/۰۱/۲۵

2021/04/14 GMT +4:30

» انتخاب ردیف ها با دستور SELECT در MySQL

mysql-select-from

فرآیندهای متداول سیستم های مدیریت پایگاه داده نظیر MySQL شامل چند مورد اصلی ذخیره سازی، بازیابی، به روزرسانی و در نهایت حذف اطلاعات است که در خصوص شیوه ذخیره سازی با دستور INSERT INTO در آموزش گذشته مفصل صحبت کردیم، در این مطلب می خواهیم به بحث بازیابی و انتخاب ردیف ها جهت استفاده از اطلاعات جداول MySQL در برنامه PHP بپردازیم، در دنیای برنامه نویسی ذخیره سازی و نگهداری اطلاعات به خودی خود صرفا یک هدف اولیه محسوب می شود و عمدتا نیازمند این هستیم که از اطلاعات ذخیره شده در شرایط مختلف در برنامه پردازش یا خروجی مورد انتظار داشته باشیم که بدین منظور در هر زبان برنامه نویسی ساز و کاری در نظر گرفته شده است، با ذکر این مقدمه در این آموزش با دستور دیگری از MySQL تحت عنوان SELECT آشنا می شویم که برای انتخاب ردیف های اطلاعاتی (Rows) و انجام پردازش های مورد نیاز در کدهای PHP از آن استفاده می کنیم.

کاربرد دستور SELECT در MySQL


پیش تر گفتیم که صرف ساخت دیتابیس (Database)، جدول (Table)، ستون (Column) و وارد کردن اطلاعات ردیف بندی شده (Rows) در آن تمام کار ما با MySQL نیست، در واقع این فرآیندها جزء مرحله دریافت و نگهداری اطلاعات هستند، اما اگر بخواهیم مجددا از این داده ها در قسمت های مختلف برنامه استفاده کنیم نیاز است که به کمک PHP ردیف های مد نظر را انتخاب (Select) نموده و فراخوانی کنیم، این کار در تعامل بین PHP و MySQL با دستور SELECT و پارامترهای آن انجام می شود که با توجه به نیاز برنامه و تنظیماتی که انجام می دهیم اطلاعات خاصی را از ردیف های موجود در جداول انتخاب و فراخوانی می کند تا پردازش مورد نظر روی آنها صورت گرفته و احتمالا به خروجی ارسال شوند.

شیوه نگارش (Syntax) دستور SELECT در MySQL


شیوه نگارش یا Syntax دستور SELECT در MySQL به صورت نمونه زیر است و به طور معمول همراه با پارامتر FROM استفاده می شود:
SELECT col_1, col_2 FROM tbl
مثال:
//انتخاب ردیف از تمام ستون ها
mysqli_query($conn, "SELECT * FROM table");

//انتخاب ردیف از یک یا چند ستون خاص
mysqli_query($conn, "SELECT id, name FROM table");
توضیح:
- در مورد mysqli_query گفتیم که یک تابع درونی در اکستنشن MySQLi است که جهت اجرای فرآیند پرس و جو بین کدهای PHP و دیتابیس MySQL کاربرد دارد.
- بعد از عبارت SELECT می توانیم از علامت * استفاده کنیم که در اینصورت ردیف های مربوط به تمام ستون ها به عنوان نتیجه پرس و جو انتخاب می شوند، این حالت در شرایطی که صرفا ستون یا ستون های خاصی مد نظرمان باشد مناسب نیست و فشار بیشتری به دیتابیس تحمیل می کند که در برنامه های با تعداد کاربر بالا ممکن است مشکل ساز شود، روش بهینه این است که صرفا نام ستون هایی که اطلاعات آنها مد نظرمان است را پس از عبارت SELECT درج کنیم (جداسازی با کاراکتر کاما ',').
- دستور SELECT FROM با پارامترهای دیگری از جمله WHERE تکمیل می شود که در ادامه سری آموزش های مقدماتی MySQL در این خصوص خواهیم گفت.
- پس از اجرای یک Query با دستور SELECT FROM بر اساس نوع درخواست و تنظیمات ما، مقادیر یا ردیف هایی به عنوان نتیجه پرس و جو برگردانده می شود، این مقادیر می تواند اطلاعات موجود در دیتابیس یا به طور مثال تعداد ردیف های انتخابی باشد.
- برای استفاده از نتیجه پرس و جو بهتر است تابع mysqli_query را به یک متغیر نسبت دهیم تا اطلاعات در ادامه برنامه در متغیر قابل دسترسی و مدیریت باشند، به فرض:
$query = mysqli_query($conn, "SELECT id, name FROM table");
نکته: نمونه کدهای بالا در PHP جنبه کاربردی ندارند و صرفا مرحله انتخاب ردیف ها را شامل می شوند، برای استخراج نتایج برگردانده شده از پرس و جو نیاز به توابع و کدنویسی بیشتری است که در ادامه آموزش حاضر بررسی خواهیم کرد.

پردازش و خروجی با تابع mysqli_fetch_array و متد fetch_array


پس از انتخاب اطلاعات ستون ها با دستور SELECT و نسبت دادن نتیجه برگردانده شده به متغیر، می توانیم با حلقه while در PHP و با کمک تابع mysql_fetch_array (برنامه نویسی رویه ای) یا متد fetch_array (برنامه نویسی شی گرا) مقادیر موجود در متغیر را از حالت آبجکت (Object) به صورت آرایه تبدیل کرده و پردازش مورد نظرمان را روی آنها اعمال یا مقادیر را در خروجی چاپ کنیم، در مثال های زیر از جدول books که در آموزش های قبل ساختیم اطلاعات ستون های book و level را به دو روش برنامه نویسی رویه ای و شی گرا دریافت کرده ایم.
برنامه نویسی رویه ای (Procedural):
<?php
//اتصال به دیتابیس
$conn = mysqli_connect("localhost", "username", "password", "dbname");

if(!$conn){
    echo "PHP & MySQL Connection: Error! " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
    exit;
} else{    
    //سازگاری با حروف فارسی
    $sql = "SET NAMES 'utf8'";
    $query = mysqli_query($conn, $sql);
    
    //اانتخاب اطلاعات از جدول و ستون ها
    $sql = "SELECT book, level FROM books";
    $query = mysqli_query($conn, $sql);
    
    if(!$query){
        echo "Selecting From Table books: Error! " . mysqli_error($conn) . '<br>';
    } else{
        //تعداد ردیف های انتخاب شده
        $count = mysqli_num_rows($query);
        $loop = 1;
        
        //پردازش و خروجی ردیف های اطلاعات
        if($count > 0){
            echo '<div style="direction: rtl; border: 1px solid #999;">';
            
            echo 'تعداد ردیف ها: ' . $count . '<br><br>';

            while($row = mysqli_fetch_array($query)){
                echo 'ردیف ' . $loop . ' => ' .
                'کتاب: ' . $row['book'] . ' - ' .
                'سطح: ' . $row['level'] . '<br><br>';
                
                $loop++;
            }
            
            echo '</div>';
        } else{
            echo "No Rows Found in Table books!";
        }
    }
}

//پایان اتصال
mysqli_close($conn);
?>
برنامه نویسی شی گرا (Object-oriented):
<?php
//اتصال به دیتابیس
$conn = new mysqli("localhost", "username", "password", "dbname");
if(!$conn) {
    echo "PHP & MySQL Connection: Error! " . $conn->errno . ' - ' . $conn->error;
    exit;
} else {   
    //سازگاری با حروف فارسی
    $sql = "SET NAMES 'utf8'";
    $conn->query($sql);
    
    //اانتخاب اطلاعات از جدول و ستون ها
    $sql = "SELECT book, level FROM books";
    $query = $conn->query($sql);
    
    if(!$query){
        echo "Selecting Table books: Error! " . $query->error() . '<br>';
    } else{
        //تعداد ردیف های انتخاب شده
        $count = $query->num_rows;
        $loop = 1;
        
        //پردازش و خروجی ردیف های اطلاعات
        if($count > 0){
            echo '<div style="direction: rtl; border: 1px solid #999;">';
            
            echo 'تعداد ردیف ها: ' . $count . '<br><br>';

            while($row = $query->fetch_array()){
                echo 'ردیف ' . $loop . ' => ' .
                'کتاب: ' . $row['book'] . ' - ' .
                'سطح: ' . $row['level'] . '<br><br>';
                
                $loop++;
            }
            
            echo '</div>';
        } else{
            echo "No Rows Found in Table books!";
        }
    }
}

//پایان اتصال
$conn->close();
?>
توضیح:
- در این نمونه کدها فرض بر این است که جدول books را با سه ستون id، book و level از قبل ساخته ایم (رجوع به آموزش های گذشته).
- تابع mysqli_num_rows و متد num_rows تعداد ردیف هایی که به عنوان نتیجه پرس و جو انتخاب شده اند را برمی گردانند، اگر این مقدار 0 باشد یعنی هیچ ردیفی مطابق با پرس و جوی ما انتخاب نشده است.
- در صورت موفقت آمیز بودن پرس و جو نتیجه به صورت MySQL Result Object خواهد بود، این آبجکت جهت استفاده در کدهای PHP معمولا باید تبدیل به آرایه شود که در ادامه توضیح خواهیم داد.
- تابع mysqli_fetch_array نتیجه برگردانده شده توسط تابع mysqli_query و متد fetch_array نتیجه برگردانده شده توسط متد query را به آرایه قابل استفاده در PHP تبدیل می کنند.
- آرایه به دست آمده با تابع mysqli_fetch_array یا متد fetch_array با کلید و مقدار در کدهای PHP در دسترس است که در حلقه while می توانیم از ردیف های برگردانده شده خروجی بگیریم.
- در مثال های بالا مقادیر داخل علامت های [ ] در حلقه while نام ستون های جدول دیتابیس هستند که در هر دور حلقه while تا زمانی که کلید و مقداری در آرایه برای خروجی دادن وجود داشته باشد برای هر ردیف انتخاب شده تکرار می شوند.
- برای درک بهتر می توانیم با تابع var_dump در PHP از متغیر row در حلقه while خروجی بگیریم، مثال:
var_dump($row);

array (size=4)
  0 => string 'آموزش HTML' (length=15)
  'book' => string 'آموزش HTML' (length=15)
  1 => string 'مقدماتی' (length=14)
  'level' => string 'مقدماتی' (length=14)
همان طور که مشخص است MySQL نتیجه را هم به صورت کلیدهای عددی و هم رشته ای برمی گرداند که می توانیم از هر دو حالت برای گرفتن خروجی استفاده کنیم، به فرض:
$row['book'];
$row[0];
استفاده از دو شیوه بالا نتیجه یکسان خواهد داشت.
- در حالت شی گرا علاوه بر متد fetch_array می توانیم از متد fetch_assoc نیز استفاده کنیم، عبارت assoc به معنی Associative Array است که در این حالت نتیجه پرس و جو به صورت آرایه ای است که نام ستون ها (رشته متنی) به عنوان کلید آرایه تنظیم شده است، به فرض:
$row['book'];
علاوه بر مواردی که گفته شد شیوه های دیگری نیز برای دریافت نتیجه پرس و جو در حلقه while وجود دارد از جمله استفاده از تابع mysqli_fetch_row و متد fetch_row، تابع mysqli_fetch_object و متد fetch_object که به جهت کاربرد کمتر و جلوگیری از طولانی شدن مبحث در این مرحله به ذکر چند مثال بسنده می کنیم:
$query = mysqli_query($conn, "SELECT book, level FROM books");
while($row = mysqli_fetch_row($query)){
    echo $row[0] . ': ' . $row[1] . '<br>';
}

$query = $conn->query("SELECT book, level FROM books");
while($row = $query->fetch_row()){
    echo $row[0] . ': ' . $row[1] . '<br>';
}

$query = mysqli_query($conn, "SELECT book, level FROM books");
while($row = mysqli_fetch_object($query)){
    echo $obj->book . ': ' . $obj->level . '<br>';
}

$query = $conn->query("SELECT book, level FROM books");
while($obj = $query->fetch_object()){
    echo $obj->book . ': ' . $obj->level . '<br>';
}
نتیجه این پرس و جوهای فرضی می تواند به صورت زیر باشد:
آموزش HTML: مقدماتی
آموزش PHP: پیشرفته
آموزش MySQL: پیشرفته
پرس و جوهای SELECT در MySQL عموما با قسمت WHERE همراه هستند که در مباحث پیش رو در خصوص استفاده از دستور WHERE و پارامترهای آن توضیح خواهیم داد.
دسته بندی: آموزش مقدماتی » MySQL
related مطالب بیشتر:
» به روز رسانی ردیف ها در MySQL با UPDATE
» محدودسازی، گروه بندی و مرتب سازی نتایج در MySQL
» ساخت دیتابیس، جدول و ستون با دستور CREATE در MySQL
» استفاده از JOIN و ساخت پرس و جوی ترکیبی در MySQL
» اتصال PHP به MySQL با اکستنشن MySQLi
commentنظرات (۶۸ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: احد
۲۳:۴۱ ۱۳۹۴/۰۵/۲۶
سلام
باز هم ممنون از وقتی که برای من گذاشتید اما مشکل من این است که می خواهم تعدادی از اسامی موجود در دیتابیس را از طریق حلقه while دریافت کنم و برای هر یک یک کلید مجزا قرار دهم تا با انتخاب ان کلید به صفحه تغییر رفته و فقط همان رکورد را باز گرداند. کدی که من برای این منظور نوشتم به صورت زیر است اما مشکل اینجاست که با کلیک بر روی هرکدام از کلید های ساخته شده در صفحه مقصد نام اخرین رکورد یافت شده بازگردانده میشود نه رکورد مورد نظر.
حذف شد
پاسخ: 
باید کاربرد دستوراتی که می نویسید را بلد باشید که این تنها با گذراندن آموزش های مقدماتی میسر است، در غیر اینصورت با مشکلات متعددی روبرو خواهید شد! در کدهایی که درج کرده اید، در صفحه دوم باید پس از دریافت مقادیر ID از طریق متد POST یا GET، آن را در پرس و جوی SELECT استفاده کنید تا ردیف متناظر از دیتابیس انتخاب و فرآیندهای مورد نظر با توجه به نیاز شما انجام شود، واضح است که دستور echo فقط مقدار را چاپ خواهد کرد!
نویسنده: rayej.ir
۲۲:۰۵ ۱۳۹۴/۰۶/۰۲
به نام خدا
سلام میخواست بدونم که چطور میتونم داده ای رو انتخاب کنم که aaa_ssss , aaaa_ssss هست و من فقط اونی رو لازم دارم که توش aaa داره .
من از دستور LIKE هم استفاده کردم ولی هردو مقدار برگشت داده شده است.
با تشکر از شما و سایت عالی تون.
پاسخ: 
اگر شکل داده ها به همین صورتی باشد که درج کرده اید، می توان پارامتر دستور LIKE را به شکل زیر نوشت:
LIKE 'aaa_%'
نویسنده: کاظم
۱۹:۳۱ ۱۳۹۴/۰۸/۳۰
سلام
ممنون
اگه بخوایم در همین مثال شما اینطور عمل کنیم به چه صورت میشه کد:
یه فرمی داشته باشیم که با وارد کردن نام کاریری،‌ اطلاعات همون فرد رو بگیره
ممنون میشم توضیح بدید
پاسخ: 
سلام
اطلاعات پس از ارسال فرم HTML به صورت متد POST (یا GET) دریافت و به متغیری در PHP نسبت داده می شوند، در ادامه می توان از مقدار آن متغیر در پرس و جو استفاده کرد، به عنوان مثال:
$user = $_POST['user'];

SELECT * FROM table WHERE user = $user
نکته: در این حالت باید نکات امنیتی (ایمن سازی داده ها قبل از استفاده در پرس و جوی دیتابیس) به دقت انجام شود که باید با توجه به اکستنش استفاده شده (MySQL, MySQLi, PDO) روش مرتبط (مانند استفاده از تابع mysql_real_escape_string در اکستنشن MySQL) را استفاده کنید تا خطر نفوذ به دیتابیس مرتفع شود.
نویسنده: کاظم
۱۴:۳۰ ۱۳۹۴/۰۹/۰۲
سلام
نتونستم درستش کنم :(
<?php
$con = mysql_connect("localhost", "root", "")//اطلاعات اتصال
or die(mysql_error());
mysql_select_db("apadana", $con)//نام دیتابیس
or die(mysql_error());
$result = mysql_query("SELECT * FROM xfmf9_private_messages WHERE msg_sender='$msg_sender'", $con)
or die(mysql_error());// انتخاب از جدول
//گرفتن خروجی از اطلاعات فیلدها با mysql_fetch_array

$msgsender = $_POST['msg_sender'];

while ($row = mysql_fetch_array($result)){
$id = $row['msg_id'];
$name = $row['msg_sender'];
$family = $row['msg_receiver'];
$age = $row['msg_text'];
echo "$id و $name و $family و $age";
}
mysql_close($con);//پایان ارتباط
?>
<form action="" method="POST">
<input type="text" name="msg_sender" id="msg_sender" value="">
<input type="submit" value="ok">
</form>
الان چجوری میشه؟
پاسخ: 
ابتدا باید مقدار ارسالی از کاربر با متد POST دریافت و سپس در پرس و جو استفاده شود، ظاهرا در کدهای شما ابتدا متغیر msg_sender در پرس و جو استفاده و سپس مقدار در ادامه کدها دریافت شده که اشتباه است + نام متغیر که _ ندارد!
ضمن اصلاح نام متغیر، خط زیر را در ابتدا قرار دهید:
$msgsender = $_POST['msg_sender'];
نویسنده: سعید رضایی
۰۲:۴۶ ۱۳۹۴/۰۹/۱۱
با سلام و عرض ادب و ضمن تشکر از مطالب خوبتون
یه سوال داشتم خدمتتون
فرض کنید یه ستون داریم به نام NameSherkat یه ستون هم داریم به نام Hessab ، حالا من میخوام اسم هر شرکتی رو که زدم ستون حسابش رو نشون بده مثلا Sherkat1 رو نوشتم ستون hessab رو باز کنه ، هم اسم شرکت بزنه هم میزان Hessab رو
$result = mysql_query("SELECT * FROM register WHERE NameSherkat =Sherkat1")
or die(mysql_error());// انتخاب از جدول
//گرفتن خروجی از اطلاعات فیلدها با mysql_fetch_array
while ($row = mysql_fetch_array($result)){
$NameSherkat = $row['NameSherkat'];
echo "NameSherkat<br />";
دیگه نمیدونم چی باید بهش اضافه کنم ، لطفا اگه مقدوره کد اصلاح شدش رو بذارین ممنونم
پاسخ: 
به همان ترتیب می توانید اطلاعات سایر ستون ها را استخراج کنید، مثال:
$NameSherkat = $row['NameSherkat'];
$Hessab = $row['Hessab'];
echo "$NameSherkat<br />$Hessab";
نویسنده: talebi
۱۷:۲۲ ۱۳۹۴/۰۹/۲۰
سلام
بنده یک دیتابیس ساختم که اطلاعات بر اساس دسته بندی در 2 جدول مختلف ذخیره میشن. الان میخوام 10 رکورد جدید این دو تا جدول رو بر اساس تاریخی که ثبت شده دربیارم. یعنی مثلا ممکن هست از این 10 تا 9 تاش مال جدول اول و یکی مال جدول دوم باشه.
راهی هست برای این کار؟
رکوردها رو همزمان از دو تا تیبل بر اساس تاریخ سورت بکنم
پاسخ: 
باید با JOIN و مشتقات آن در MySQL آشنا باشید، به طور مثال:
SELECT * FROM `tbl_1` WHERE id != '' UNION SELECT * FROM `tbl_2` WHERE id != '' ORDER BY col_name ASC LIMIT 10 
نویسنده: پریسا
۱۹:۱۴ ۱۳۹۴/۰۹/۲۷
سلام
من میخوام سطرهای یک جدول در دیتابیس را با استفاده از دکمه next ده تا ده تا بخوانم لطفا راهنمایی کنید.
ممنون
پاسخ: 
آموزش جداگانه ای تحت عنوان "صفحه بندی مطالب و محتوا با PHP و MySQL" در سایت وجود دارد، لطفا این عبارت را در وب جستجو کنید!
نویسنده: hadi
۲۱:۴۶ ۱۳۹۴/۱۰/۰۴
درود
آیا ما میتوانیم در دستور select به شکل زیر استفاده کنیم؟
1. شکل کلی
select  name from dbname where name='ali' =>normal
2. خواسته ما
select  $name from dbname where '$name'='$name' 
یعنی خواسته هایمان را از طریق ورودی به select بدیم ؟؟
پاسخ: 
بله، در PHP به یکی از دو حالت نمونه زیر می توانید متغیرها را به عنوان پارامتر در پرس و جوی MySQL استفاده کنید:
<?php
$query = "SELECT ".$col_name." FROM ".$tbl_name." WHERE ".$col_name." = ".$some_name;
$query = "SELECT ".$col_name." FROM ".$tbl_name." WHERE `".$col_name."` = '".$some_name."'";
?>
در واقع تنها چیزی که مهم است خروجی نهایی پرس و جو است که باید مطابق با Syntax دستورات MySQL باشد.
نویسنده: محمد
۱۸:۱۶ ۱۳۹۴/۱۰/۰۹
سلام
اگه یک دستور select بسیار سنگین در شرطی مثل شرط زیر باشه توسط php خوندن میشه؟
<?php
$webgoo=5;
if($webgoo==1){
$select_sql=mysql_query("select * from test");
};
?>
آیا این دستور خونده میشه؟
من می خوام پی اچ پی وقتی شرط بالا بر قرار نباشه این query رو نادیده بگیره و تاثیری روی سرعت نزاره
میشه؟
پاسخ: 
در صورت برقرار نبودن شرط، دستورات مربوط به آن پردازش نمی شوند (البته خطاهای Syntax بررسی می شود!) و لذا "سنگین" بودن دستور داخل شرط if در صورت برقرار نبودن آن تاثیری در پردازش کد ندارد!
نویسنده: محمد
۱۴:۰۰ ۱۳۹۴/۱۰/۱۳
سلام
فکر کنید قراره متنی 40 خطی در یک صفحه با PHP نمایش داده بشه حالا به نظر شما اگر این متن از یک فایل فراخوانی بشه سرعت بیشتری داره یا از یک ردیف MySQL ؟
خدایی گیر این سوالم، کلا دو دل شدم
اگه میشه راهنمایی کنید ممنون
پاسخ: 
اصولا و در کل، فراخوانی یک فایل و پردازش اطلاعات آن سریعتر از اتصال به دیتابیس و استخراج اطلاعات است، از جمله مزیت های دیگر این حالت این است که معمولا صرفا زمانی از کار می افتد که سرور شما کلا Down شده باشد، اما در کار با دیتابیس ممکن است دیتابیس Crash کند و کار با آن ممکن نباشد، البته قاعدتا کار با فایل ها برای عملیات های پیچیده و اطلاعات طبقه بندی شده بسیار سخت خواهد بود و استفاده از دیتابیس برای این موارد تقریبا اجتناب ناپذیر است!
نویسنده: حسین میرزایی
۱۴:۱۷ ۱۳۹۵/۰۲/۲۸
سلام دوست عزیز من یک جدول دارم
مثال بر فرض فرمی ساختم که کاربر عنوان سایتو بفرسته به دیتابیس با پر کردن فرم متن به دیتابیس میره حالا من میخوام این تیبل رو فراخوانی کنم و تو متغیر بر فرض abc بریزم لطفا یاد بدین جدولمو چجوری تو متغیر abc بزنم که سایت فقط با فراخوانی متغیر اون بیاد ممنون
پاسخ: 
منظور از این قسمت سوال مشخص نیست!:
"...لطفا یاد بدین جدولمو چجوری تو متغیر abc بزنم که سایت فقط با فراخوانی متغیر اون بیاد..." در کل برای فراخوانی اطلاعات از دیتابیس باید یک پرس و جو با SELECT بنویسید و در حلقه while با استفاده از توابعی مانند mysqli_fetch_array ردیف های مورد نظرتان را استخراج کنید که نمونه در آموزش حاضر نیز وجود دارد!
نویسنده: مهدی بیگدلو
۲۲:۱۷ ۱۳۹۵/۱۲/۲۷
من می خواهم کد
<?php
//انتخاب از تمام ستون ها
mysql_query("SELECT * FROM table");
//انتخاب از یک یا چند ستون خاص
mysql_query("SELECT id,name FROM table");
?>
داخل یک تابع (function) بنویسم چه کار کنم
پاسخ: 
صرف نوشتن یک تکه کد داخل تابع کار سختی نیست، اما باید دید هدفتان از این کار چیست تا متناسب با آن بهترین راه حل ارائه شود، مثال در حد اطلاعات درج شده:
<?php
function dbQuery(tbl_name, col_name){
//انتخاب از تمام ستون ها
mysql_query("SELECT * FROM " . tbl_name);
//انتخاب از یک یا چند ستون خاص
mysql_query("SELECT " . col_name . " FROM " . tbl_name);
}
return false;
?>
نکته: اکستنشن MySQL قدیمی و منسوخ شده است، توصیه می کنیم از اکستنش MySQLi یا PDO استفاده کنید.
نویسنده: امیر
۰۴:۵۵ ۱۳۹۶/۰۵/۲۴
واقعا دمتون گرم چند روز بود که گرفتار شده بودم بخدا ، مشکلم رو در چند دقیقه شما حل کردید
سپاسگزارم
نویسنده: محمد
۰۱:۴۶ ۱۳۹۷/۰۳/۰۹
با سلام و تشکر از سایت خوبتون
من توی پروژم از php و mysqli استفاده میکنم توی پروژه من یک سری اطلاعات از دیتابیس روی صفحه نمایش دادم به صورت جدولی با سه دکمه برای وییو و ویرایش و حذف حالا سوالم اینه چطور میتونم وقتی کاربر روی دکمه وییو کلیک کرد اطلاعات اون سطر رو به کاربر توی یه جدول دیگه نشون بده
ممنون از همکاریتون
پاسخ: 
سوالتان کلی است! ابتدا باید پارامتر مربوط به ردیف مورد نظر را از طریق آدرس URL انتقال دهیم، این پارامتر معمولا شماره ID ردیف است، به فرض:
localhost/index.php?action=view&id=2
در فایل فرضی index.php با استفاده از متد GET شماره ID را دریافت کرده
$id = $_GET['id'];
و ضمن رعایت اصول امنیت پایگاه داده بر اساس آن یک پرس و جوی SELECT نوشته و اطلاعات ردیف مورد نظر را از دیتابیس استخراج می کنیم، سپس خروجی HTML را با استفاده از تگ table و اطلاعات دریافت شده ایجاد و در نهایت به مرورگر ارسال می کنیم، قاعدتا برای نوشتن این مراحل باید برنامه نویسی PHP بلد باشیم.
نویسنده: محمد
۱۴:۴۱ ۱۳۹۷/۰۳/۱۱
ممنون از جوابتون
ولی من ارسال اطلاعات از طریق متد post انجام دادم که توی آدرس مرورگر چیزی نمینویسه حالا چطوری باید id گرفت و وقتی کاربر روی دکمه ویوو کلیک کرد اطلاعات اون فیلد جداگانه به نمایش گذاشت.
ممنون از وقتی که میذارین.
پاسخ: 
تفاوت صرفا در نحوه ارسال و دریافت پارامتر id است، در صورتی که می خواهید از متد POST استفاده کنید یک راه ساده ایجاد یک فیلد input از نوع hidden و درج شماره id به عنوان پارامتر value است، مثال:
<input type="hidden" name="id" value="2">
سپس این پارامتر را که به همراه فرم ارسال می شود در سمت سرور با متد POST در PHP دریافت می کنیم:
$id = $_POST['id'];
بر همین اساس می توانیم پرس و جوی SELEC بنویسیم و موارد دلخواه را از دیتابیس استخراج کنیم.
نکته: در PHP و در کل برنامه نویسی اغلب موارد به صورت داینامیک انجام می شوند، به فرض درج شماره id در قسمت value می تواند در هنگام چاپ خروجی اولیه و نمایش جدول اطلاعات در حلقه صورت بگیرد، به فرض:
$input = '<input type="hidden" name="id" value="'. $row['id'] . '">';
لذا داشتن تجربه و مهارت های مقدماتی برنامه نویسی جزء ملزومات اولیه کار است.
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- موارد غیرمرتبط با مباحث آموزش ها را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ مختصر داده خواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- از درج عناوین تبلیغاتی در فیلدها خودداری کنید، در صورتی که یادداشت تبلیغاتی تشخیص داده شود حذف خواهد شد.
- تمام یادداشت ها بررسی و زمانی جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد خودداری کنید.





5 × 1
 refresh

آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
form شریفی
در:
سلام مجدد. من یه سوال خیلی تخصصی دارم. ممنون میشم پاسخ بدین. برای پروژه پایان نامه. دارم روی موتورهای جستجوگر تحقیق میکنم. فرض...
۱۴۰۰/۰۱/۲۵

form شریفی
در:
سلام استاد. من از متد file_get_contents استفاده می کنم برای دریافت اطلاعات از سایت های مختلف. بعضی وقتها سایت ها دیر لود میشه. آیا...
۱۴۰۰/۰۱/۲۵

form hh
در:
سلام خدمت شما بنده یه سوال داشتم تمام مراحل شما رو انجام دادم و نتیجه گرفتم و لازمه یه تشکرم بکنم. وبسایت من،...
۱۴۰۰/۰۱/۲۵

form erfan
در:
سلام من واسه یه دکمه یه محتوایی تعریف کردم که وقتی کلیک شد محتوا رو نشون بده اما تو دوجاش موندم یک اینکه چیکار کنم...
۱۴۰۰/۰۱/۲۱

form mahdi
در:
سلام استاد عزیز ، بازم معذرت میخوام سوالام زیاد شد ولی همشون در یک موضوع هستن ، تونستم که با این روش برای هر اسلایدر...
۱۴۰۰/۰۱/۱۸

form mahdi
در:
سلام استاد عزیز عذر میخوام بار سومه پیام میزارم ، مشکلش از ست اینترول بود که قطع نمیشد و با هم تداخل داشتند ولی بدون...
۱۴۰۰/۰۱/۱۸

form mahdi
در:
سلام وقت بخیر استاد عزیز ، یک تابع رو چطور میشه در جاوا اسکریپت اورراید کرد؟ که مثلا با هر فراخوانی مجدد ، قبلی ها...
۱۴۰۰/۰۱/۱۸

form متین
در:
سلام چجوری برای خود صفحه ادرس بسازیم که سایتی که رو ساختیم رو با دستگاه دیگه پیداش کنیم
۱۴۰۰/۰۱/۱۶

form امیرحسین برزویی
در:
من یک وبلاگ دارم و 9 سالمه من در وبلاگم مداحی می گذارم ولی وقتی قاب گذاشتم از این سایت من دیگه فیلم...
۱۴۰۰/۰۱/۱۶

form بنده خدا
در:
سلام خسته نباشین، خدا قوت. یه سوال دارم. چرا در بخش نظردهی وبلاگ به جای عنوان پست می نویسه مطلب مورد نظر یافت نشد؟!...
۱۴۰۰/۰۱/۱۵

form روح الله
در:
موقعی میخواهم وارد سایت ایران خودرو بشم پیام میده از Ip داخلی استفاده کنید دلیلش چیست
۱۴۰۰/۰۱/۱۴

form غریب
در:
تشکر از شما مشکلم حل شد امیدوارم موفق و پیروز باشید هر جا که هستید
۱۴۰۰/۰۱/۱۱

form غریب
در:
سلام مجدد ممنون و تشکر از کمکتون کد به خوبی کار میکنه اما همچنان من مشکلی دارم که حل نتونستم کنم...
۱۴۰۰/۰۱/۱۰

form غریب
در:
سلام مجدد این کدی که دادید خوب هست ولی من بد و ناقص توضیح دادم توجه کنید کد این هست تقریبا ممنون...
۱۴۰۰/۰۱/۱۰

form غریب
در:
سلام خسته نباشید من کدی دارم که میخوام داخل یه بخشیش نتیجه یه رویداد رو فراخوانی کنم و راهش و نمیدونم اگر میشه کمک...
۱۴۰۰/۰۱/۱۰

form محسن
در:
سلام ، سوال من مربوط به پنل کارگزاری هاست ، وقتی اسم یک سهم (نماد) را در قسمت جست و جو سرچ میکنم...
۱۴۰۰/۰۱/۰۸

form ترجمه
در:
باسلام همه صفحات من دارای دو url می باشد که یکی با حروف کوچک است و دیگری با حروف بزرگ چجوری این مشکل را...
۱۴۰۰/۰۱/۰۸

form سهیل ملکی
در:
سلام خسته نباشید ببخشید من میخوام از تابع navigator.online توی جاوا اسکریپت استفاده کنم تا باهاش بفهمم کاربر آنلاین هست یا نه و اگه بود...
۱۴۰۰/۰۱/۰۴

form Rabbiten
در:
سلام. من چند ماه است که دنبال کد استایل تصویر مثل تبلیغات بالای سایت شما هستم. اما هیچ جا پیدایش نمی کنم. لطف می...
۱۴۰۰/۰۱/۰۱

form mahdi
در:
سلام استاد عزیز سال نو رو تبریک میگم بهتون ، امیدوارم که خودتون و خانوادتون همیشه سالم و سلامت باشید و امسال پر از...
۱۳۹۹/۱۲/۳۰

form korosh abbasy
در:
سلام وقت بخیر ببخشید در مورد این مطلب سوالی پرسیدم شما در مورد output buffering توضیح دادید کد کار نمیکنه میخواستم ببینم نیازی هست من...
۱۳۹۹/۱۲/۲۹

form احمد
در:
سلام مجدد عذرخواهی میکنم یه موردی دیگه بود فراموش کردم در مورد سوال هدر بگم اینکه روی لوکال به هدر ارسال میشه ولی روی هاست...
۱۳۹۹/۱۲/۲۸

form احمد
در:
با سلام خسته نباشید ببخشید قبلا یه سری دستورات جی کوری رو از خودتون گرفتم وقتی فیلدهای فرمم تکمیل شده است توسط هدر بره به...
۱۳۹۹/۱۲/۲۸

form korosh abbasy
در:
سلام دم شما گرم این دستور برای خوندن فایل هم استفاده میشه؟ من میخوام دسترسی تعیین کنم که اگر یک متغییر true...
۱۳۹۹/۱۲/۲۷

form احمد
در:
با سلام و خسته نباشید ببخشید داخل جیکوری یدونه متغییر دارم الان میخوام همین متغییر رو با یه عدد دیگه جمع کنم ولی وقتی علامت...
۱۳۹۹/۱۲/۲۶
  در انتظار بررسی: ۱
 پاسخگویی به سوالات ممکن است تا 24 ساعت زمان ببرد.