شنبه ۲۲ شهریور ۱۴۰۴

Saturday, September 13, 2025 GMT +3: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 با دستور DELETE
نحوه ذخیره کردن اطلاعات با دستور INSERT در MySQL
ساخت دیتابیس، جدول و ستون با دستور CREATE در MySQL
توابع تجمیعی (Aggregate Functions) در MySQL
به روز رسانی ردیف ها در MySQL با UPDATE
دیدگاه
more ۷۲ دیدگاه برای این مطلب ارسال شده است.
more چینش دیدگاه ها به ترتیب از جدیدترین به قدیمی ترین است.
H.Clean
۱۳:۰۶ ۱۳۹۳/۰۵/۲۵
سلام
برای انتخاب دیتابیس میگه دو پارامتر نیاز داره.
پارامتر دوم چیه؟!
در نسخه های جدید PHP پارامتر دوم همان لینک اتصال است، مثال:
$con = mysql_connect("localhost", "user", "pass")//اطلاعات اتصال
or die(mysql_error());

mysql_select_db("db", $con)//نام دیتابیس
or die(mysql_error());
نکته: اکستنشن MySQL قدیمی و منسوخ شده است، توصیه می کنیم از اکستنش MySQLi یا PDO استفاده کنید.
الهه
۱۱:۴۰ ۱۳۹۳/۰۵/۱۶
سلام. من توي جدولم 100 تا ركورد ذخيره شده دارم. حالا با دستور select ميخوام 10 ركورد اول جدول رو نشون بده. بعد كاربر روي گزينه بعدي كه پايين صفحه است كليك كنه و بتونه 10 ركورد بعدي جدول رو ببينه و همينطور . . . .
مثل سايت خودتون. من فقط بلدم 10 تاي اول رو محدود به نمايش كنم (limited 10)
ولي 10سطر دوم رو نميدونم.
يه سوال ديگه: گزينه "بعدي" بايد يه لينك به يه صفحه ديگه باشه؟
آموزش مفصلی در این رابطه در سایت وجود دارد، لطفا عبارت "صفحه بندی" را در قسمت جستجو وارد کنید.
ساحل
۲۰:۰۵ ۱۳۹۳/۰۵/۰۵
سلام.
اولا ممنون از مطالب خیلی خوبتون.
من یک فرم نوشتم که اطلاعاتی را از کاربر دریافت می کنه که این اطلاعات در دیتابیس من ذخیره می شوند. من می خوام این اطلاعات را در یک صفحه در سایتم نمایش بدم. مثلا تو این صفحه 20 تا خانه ایجاد کنم که تو این صفحه 20 تا ثبت اخیر نمایش داده و هر ثبتی که اضافه میشه اولین ثبت را حذف کنه و در آخرین خانه اطلاعات این ثبت آخر را نشان بده. من راجع به کلیت کارم هیچی نمی دونم. میشه راهنماییم کنید.
در کل باید با نحوه کار دستورات PHP و پایگاه داده MySQL آشنا باشید، در این صورت با نوشتن چند خط کد ساده و SELECT کردن اطلاعات بر اساس LIMIT و ASC و DESC می توان خروجی مورد نظر را چاپ کرد.
علی
۱۸:۴۹ ۱۳۹۳/۰۵/۰۵
دوباره سلام
من یه بخش واسه ارسال عکس پروفایل اضافه کردم به سایتم البته از یه پروژه اماده استخراجش کردم و به دیتابیس سایت خودم متصل کردم ولی الان که نگاه میکنم می بینم وقتی یه کاربر مثلا ادمین عکس خودش رو عوض میکنه این عکس واسه کل کاربرای دیگه هم عوض میشه یه برعکس یه کاربر دیگه این کارو بکنه واسه ادمین و بقیه کاربرا عوض میشه مشکل از آپدیت و ارسال دستور به دستورات زیر یه نگاه بندازید :
    $update = mysql_query("UPDATE users SET avatar='$avatar',userfax='$userfax' WHERE userid='1'");
if ($update) {
$message = $general->notification('success','آواتار شما با موفقیت تغییر یافت');
} else {
$message = $general->notification('error','Error Happened');
}
}
$query = mysql_query("SELECT avatar,userfax FROM users WHERE userid='1'");
$row = mysql_fetch_array($query);
هر کاری کردم نتونستم درستش کنم ممنون میشم راهنماییم کنید
من میخوام وقتی کاربری میاد عکس آپلود میکنه تا آواتارش عوض بشه فقط عکس خودش عوض بشه ولی تو بالا فقط واسه کاربری که ایدیش مساوی 1 هست این عمل انجام میشه
ممنون میشم این دستورات رو واسم اصلاح کنید
متوجه سوالتان نشدیم!
قاعدتا باید ID کاربری که قصد ایجاد تغییر در پروفایل خود را دارد را داشته باشید (به دست آوردن ID کاربر جاری بستگی به ساختار برنامه شما دارد)، سپس در قسمت مربوطه همان ID را استفاده کنید تا فقط ستون مربوط به آن کاربر به روز شود، وقتی به جای ID عدد 1 را گذاشته اید نباید انتظار داشت که دستورات PHP خود به خود تشخیص دهند که هدف شما کدام کاربر است و لذا فقط ستون 1 آپدیت می شود!
علی
۰۸:۳۹ ۱۳۹۳/۰۴/۲۶
سلام
چطوری میتونم تعداد نظرات رو محدود کنم مثلا اگه من نظرم بیشتر از 50 حرف بود دیگه ادامه رو نشون نده یا نقطه ... بذاره جلوش
$sql = "SELECT * FROM $tb_name ORDER BY `username` & `content`";
content رو میخوام محدود کنم
این کار مخصوصا برای زبان فارسی باید در هنگام نمایش خروجی انجام شود، در این خصوص آموزش جداگانه ای در سایت وجود دارد، عبارت "پاراگراف" را در قسمت جستجو وارد کنید.
Ali Zeus
۱۳:۲۰ ۱۳۹۳/۰۴/۲۳
با سلام مجدد
بسیار ممنون و من مشکلم با
<option value="0" selected="selected">
که در پست
webgoo.ir/144/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%AA%DA%AF-%D9%81%D8%B1%D9%85-form-%D8%AF%D8%B1-html
مکتوب کرده بودین و کمی دستور php ساده حل شد
بصورتی که php دیتابیس رو میخونه و اگه مثلا متغیر 1 بود سلکت 1 رو سلکت میکنه
و باز هم مشکلم با وبگو حل شد
بسیار ممنون
Ali Zeus
۲۳:۴۳ ۱۳۹۳/۰۴/۲۰
با سلام مجدد و خسته نباشید و بسیار ممنون از پاسختون
من تقریبا تازه کار هستم و چیز زیادی از این کدی که دادین متوجه نشدم
راه ساده تری وجود نداره؟
مثلا مانند input های radio که با checked میشه مشخص کرد در موقع باز شدن صفحه کدوم radio سلکت شده باشه
ایا selected box همچین حالتی داره که بگه هنگام بارگذاری صفحه کدوم سلکت انتخاب بشه؟
بسیار ممنون
توضیحات گفته شد، تگ های HTML قابلیت داینامیک ندارند یعنی دستور پذیر نیستند، نمی توان به تگ select گفت option را به صورت پیش فرض انتخاب کن مگر اینکه دستورش را بنویسید، این کدهای PHP هستند که می توانند خروجی HTML را به صورت داینامیک (متناسب با مقدار موجود در دیتابیس و سایر شرایط) چاپ کنند.
اگر درک مطلب به نظرسخت است، باید آموزش های مقدماتی را مطالعه کنید.
Ali Zeus
۱۶:۳۵ ۱۳۹۳/۰۴/۱۷
با سلام و خسته نباشید و ممنون از سایت عالیتون
میخواستم ببینم راهی هست که <select> از دیتابیس دستور بگیره و دیتابیس بهش بگه که کدوم سلکت موقع لود شدن صفحه انتخاب شده باشه؟
برای مثال
<?php echo $row['selectnamber']; ?>
<select><option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option></select>
یعنی میخوام وقتی که مثلا سلکت نامبر در دیتابیس برابر 3 بود <select> موقع لود صفحه روی 3 باشه و اگه مثلا روی 2 بود <select> هم روی 2 باشه
دیتابیس از تگ HTML دستور نمی گیرد! بلکه این کار باید در هنگام چاپ خروجی توسط PHP انجام شود، به طور مثال هنگامی که در حلقه while قصد چاپ خروجی را دارید، مقادیر ردیف مورد نظر را با یک دستور شرطی بررسی کنید، اگر برابر عدد دلخواه بود، option آن دور از حلقه را با حالت selected خروجی دهید، برای انجام صحیح این کار باید با موارد مقدماتی آشنا باشید، یک مثال:
<?php
echo '<select>';
$option = NULL;
while($row = mysqli_fetch_array($query)){
$number = $row['number'];
for($i = 1; $i < 5; $i++){
if($number == 3){
$option .= '<option value="'.$number.'" selected="selected">'.$number.'</option>';
}
else{
$option .= '<option value="'.$i.'">'.$i.'</option>';
}
}
}
echo '</select>';
?>
نکته: کد صرفا جهت نمونه است!
reza
۱۳:۱۳ ۱۳۹۳/۰۳/۲۴
با سلام
ممنون میشم که جواب سوالم رو بدید
من یه جدول توی دیتابیس دارم که چند تا از ستونهاش sal و mah و roz هست.
میخوام با کد
$count = mysql_num_rows($total);
تعداد رکوردهایی که ستون sal و mah و roz اونها از 1390 و 06 و 25 بیشتر است رو برام بشمره
به نظرتون باید چیکار کنم؟
ممنون میشم پاسخ رو برام ایمیل کنید
برای کار با تاریخ قاعدتا باید ستونی از نوع DATETIME و به تاریخ میلادی داشته باشید تا بتوانیم بر مبنای محاسبات تاریخ و زمان، پرس و جو را بنویسیم، با این حالت کارتان سخت می شود، در واقع در اینجا تاریخ بودن اعداد اهمیتی ندارد و صرفا باید بر مبنای اینکه چه عددی هستند، دستورات در چند گام نوشته شود، در تئوری ابتدا باید پرس و جویی بنویسید که شماره ID و سال تمام ردیف هایی که از 1389 بیشتر هستند را دریافت کند، سپس در حلقه foreach با استفاه از توابعی مانند mysql_fetch_array به صورت تو در تو یک پرس و جوی دیگر بنویسید که ID را در شرایطی انتخاب کند که سال برابر 1390 و ماه برابر یا بزرگتر از 06 باشد یا سال بزرگتر از 1390 باشد (در اینجا باید از WHERE، AND و OR در پرس و جوی خود استفاده کنید)، سپس در حلقه نهایی (درون حلقه دوم) پرس و جویی بنویسید که با COUNT یا با انتخاب ID، ستون هایی را SELECT کند که سال آنها برابر 1390 و ماه بزرگتر یا برابر 06 و روز بزرگتر یا برابر 25 باشد، یا سال بزرگتر از 1390 و ماه بزرگتر از 06 باشد.
در نهایت هم نتایج مربوط به پرس و جوی آخر را با mysql_num_rows شمارش کنید.
نکته 1: تمام مواردی که عبارت "یا" یا "و" ذکر شده، منظور استفاده از AND و OR در پرس و چو است.
نکته 2: این روش صرفا در تئوری است، اما به نظر با این شیوه به هدفتان خواهید رسید.
نکته 3: اکستنشن MySQL قدیمی و منسوخ شده است، توصیه می کنیم از اکستنش MySQLi یا PDO استفاده کنید.
yousef
۱۵:۵۹ ۱۳۹۲/۱۱/۰۲
با سلام و عرض ارادت
اگر بخواهیم بعد ارسال مشخصات از طرف کاربر به آن یک کد رهگیری داده شود و بتواند با این کد رهگیری خواسته خود را پیگیری کند چه کار باید بکنیم... از زحمات شما استاد عزیز به خاطر سایت بسیار مفیدتون کمال تشکر را دارم. من الله توفیق
لطفا از طرح سوالات کلی خودداری کنید!
قاعدتا چیزی که با دیدن سوال شما به ذهن می رسد این است که ابتدا باید یک ستون در دیتابیس به عنوان کد رهگیری یکتای هر کاربر داشته باشید، سپس در قسمت کدنویسی یک تابع برای ایجاد عبارتهای رندوم، و با پایان فرآیند مورد نظر، کد تولید شده توسط تابع را ضمن نمایش به کاربر در فیلد مخصوص او در دیتابیس ذخیره کنید.
نمونه تابع برای ایجاد کد رندوم در PHP:
function getRandomString($chars, $length){
$random_string = "";
$num_chars = strlen($chars);
for($i = 0; $i < $length; $i++){
$random_pick = mt_rand(1, $num_chars);
$random_char = $chars[$random_pick - 1];
$random_string .= $random_char;
}

//return
return $random_string;
}
echo getRandomString('abcdefghijklmnopqrstuvwxyz0123456789', 20);
۱۰:۳۸ ۱۳۹۲/۱۰/۲۵
سلام امیدوارم حالتون خوب باشه و از ایجاد سایت مفیدتون ممنون
اما یه سوال داشتم و اون اینکه چه جوری می تونم یک مقدار عددی و از یک فیلد اینتجر در مای اسکیو ال کم کنم
انجام این کار به روش های مختلف ممکن است، در ساده ترین حالت:
UPDATE tbl SET col = col + 1 WHERE id = 1
احسان
۱۲:۳۵ ۱۳۹۲/۱۰/۰۳
سلام و وقت بخیر
من میخوام توی یه قسمت از سایتم یه ردیف های خاصی از یک تیبل نشون داده بشه, مثلاً به جای نمایش همه ردیف ها فقط اونایی که userid شان برابر 0 است نمایش داده بشن
فک کنم این دستوری باشه که همه ردیف ها رو فراخوانی میکنه :
$ads = $db->get_as_array($db->site->selectAll());
لطفاً راهنمایی کنید باید چه تغییری ایجاد کنم
با تشکر
بخشی که قرار داده اید در واقع پرس و جوی اصلی نیست، بلکه متد برای فراخوانی پرس و جوی اصلی است، به عبارتی هسته اصلی دستورات در جای دیگری است که باید آن را پیدا و ویرایش کنید!
مصطفی
۱۷:۰۶ ۱۳۹۲/۰۹/۲۱
سلام می خواستم بدونم چطور میشه یه حلقه نوشت که تمام سطرهای یک جدول رو طی کنه و دستور مورد نظر رو روی همه ی سطرها اجرا کنه در حالی که ما نمی دونیم چه تعداد سطر در این جدول وجود داره.
اگر حلقه از نوع while باشد، مادامی که امکان "fetch" وجود داشته باشد حلقه نیز ادامه می یابد، اگر حلقه از نوع for بود می توانیم به فرض با mysqli_num_rows تعداد کل ردیف های انتخاب شده را محاسبه و به همان اندازه حلقه را ادامه دهیم.
نیلوفر
۲۲:۰۰ ۱۳۹۲/۰۸/۱۳
سلام
سورس کامل رو فرستادم
حذف شد
کد شما بررسی شد، باید ببینید مقادیر
$_SESSION[id]
در هنگام فراخوانی کد با چه مقداری ست می شود، انتخاب ردیف از جداول بر اساس برابر بودن ستون id با این مقادیر است، برای خطایابی، می توانید با دستور echo از موارد خروجی بگیرید و با آزمایش و خطا ایراد کار را پیدا کنید.
نیلوفر
۲۳:۱۱ ۱۳۹۲/۰۸/۱۰
سلام.
من می خوام از چند تا table بخونم و همه رو در یک جدول نشون بدم . یعنی 4 تا دستور select و while نوشتم و
$bolok.="<tr><td>$_SESSION[idn]</td><td>$_SESSION[name_m]</td></tr>";
در آخر نوشتم اما فقط درمورد while آخری درست کار می کنه و در مورد قبلیا مقدار آخر رو همش نشون میده یعنی مقدارای اولیه رو سیو نمیکنه؟؟؟؟؟ چیکار کنم؟؟؟؟؟؟
سوالتان واضح نیست! حل مشکل نیاز به دیدن سورس کد کامل دارد.
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
9 × 2
20 × 20
=