/
  • مشکل در اجرای چند کوئری به صورت همزمان

  • ارسال پاسخ   امتیاز موضوع:
    • 0 رأی - میانگین امیتازات: 0
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی مشکل در اجرای چند کوئری به صورت همزمان
    نویسنده پیام
    Viva98 آفلاین
    عضو جدید
    **

    ارسال‌ها: 3
    تاریخ عضویت: ۱۳۹۷ فروردين ۲۳
    اعتبار: 0
    تشکرها : 5
    ( 0 تشکر در 0 ارسال )
    ارسال: #1
    مشکل در اجرای چند کوئری به صورت همزمان
    سلام،وقت بخیر

    با کمک آموزش های موجود این تابع رو برای اجرای چند کوئری به صورت همزمان ایجاد کردم که به درستی کار میکنه اما یه مشکلی که داره اینکه یه warning هم ثبت میکنه،اطلاع دارم که میشه نمایش هشدارها رو خاموش کرد اما میخواستم بپرسم چطور میتونم این مورد رو حل کنم؟

    متغییر $sql اینجوری پر میشه:
    کد:
    $sql  = "SELECT * FROM....;";
    $sql .= "SELECT * FROM....;";
    $sql .= "SELECT * FROM....";

    تابع:
    کد:
    public function multi($sql){
            $Res = array();
            if (mysqli_multi_query($this->connection,$sql)){
                do{
                    if ($result=mysqli_store_result($this->connection)) {
                        while($row = $result->fetch_assoc()){
                            array_push($Res, $row);
                        }
                    mysqli_free_result($result);
                    }
                }
            while (mysqli_next_result($this->connection));
            }
            
            return $Res;
        }

    هشداری که ثبت میشه:
    کد:
    PHP Strict Standards:  mysqli_next_result(): There is no next result set. Please, call mysqli_more_results()/mysqli::more_results() to check whether to call this function/method in /home/

    از خط زیر ایراد میگیره:
    کد:
    while (mysqli_next_result($this->connection));

    متاسفانه با آموزش های داخل نت نتونستم مشکل رو حل کنم.خیلی قدردانی می کنم اگر کسی بتونه این مشکل رو برای من حل کنه.
    ۱۳۹۷ فروردين ۲۳ ۰۲:۰۹ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    undefined آفلاین
    احسان
    *******

    ارسال‌ها: 2,088
    تاریخ عضویت: ۱۳۸۸ مهر ۲۹
    اعتبار: 76
    تشکرها : 2005
    ( 2071 تشکر در 1219 ارسال )
    ارسال: #2
    RE: مشکل در اجرای چند کوئری به صورت همزمان
    لینک: https://stackoverflow.com/questions/1471...le_rich_qa
    __________________________________________________________________________
    هر چیزی که در جستن آنی آنی...
    ۱۳۹۷ فروردين ۲۳ ۰۸:۴۸ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Viva98
    Y.P.Y آفلاین
    ناظم کل
    *******

    ارسال‌ها: 2,729
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 100
    تشکرها : 2172
    ( 4817 تشکر در 2191 ارسال )
    ارسال: #3
    RE: مشکل در اجرای چند کوئری به صورت همزمان
    البته تابع mysqli_multi_query برای اجرای چند کوئری "یکی بعد از دیگری" هستش، نه اجرای چند کوئری "همزمان"
    اجرای همزمان مثل شروع مسابقه دو می مونه که همگی با هم در یک زمان شروع به دویدن میکنن
    __________________________________________________________________________
    وبلاگ: Yousha.Blog.ir

    صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
    http://gulfnews.com/opinion/thinkers/ira...i-1.500997
    ۱۳۹۷ فروردين ۲۳ ۱۰:۱۵ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : Viva98 ayoubsys
    Viva98 آفلاین
    عضو جدید
    **

    ارسال‌ها: 3
    تاریخ عضویت: ۱۳۹۷ فروردين ۲۳
    اعتبار: 0
    تشکرها : 5
    ( 0 تشکر در 0 ارسال )
    ارسال: #4
    RE: مشکل در اجرای چند کوئری به صورت همزمان
    (۱۳۹۷ فروردين ۲۳ ۰۸:۴۸ صبح)undefined نوشته شده توسط:  لینک: https://stackoverflow.com/questions/1471...le_rich_qa

    قبل از اینکه تاپیک بزنم خیلی جستجو کردم ولی متاسفانه نتونستم مشکل رو حل کنم،این لینک رو هم دیده بودم،در php تازه کار هستم برای همین نتونستم کدم رو به درستی تغییر بدم تا کار کنه.

    (۱۳۹۷ فروردين ۲۳ ۱۰:۱۵ صبح)Y.P.Y نوشته شده توسط:  البته تابع mysqli_multi_query برای اجرای چند کوئری "یکی بعد از دیگری" هستش، نه اجرای چند کوئری "همزمان"
    اجرای همزمان مثل شروع مسابقه دو می مونه که همگی با هم در یک زمان شروع به دویدن میکنن

    کاملا درسته Heart
    ۱۳۹۷ فروردين ۲۳ ۰۱:۲۴ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    MiladWorkShop آفلاین
    عضو جدید
    **

    ارسال‌ها: 12
    تاریخ عضویت: ۱۳۹۶ اسفند ۶
    اعتبار: 0
    تشکرها : 0
    ( 9 تشکر در 9 ارسال )
    ارسال: #5
    RE: مشکل در اجرای چند کوئری به صورت همزمان
    درود

    فرض کنید 3 تیبل با نام های table_01 و table_02 و table_03 که میخوایید در یک WHILE از هر سه تیبل دیتا Select کنید

    برای اینکار از کدی که توی لینک زیر نوشتم میتونید استفاده کنید

    کد PHP:
    <?php $CONF = array();

    // Database Setting
    $CONF['db_host']         = 'localhost';
    $CONF['db_user']         = 'root';
    $CONF['db_pass']         = 'password';
    $CONF['db_name']         = 'db';

    // MySQL Connection
    $db = new mysqli($CONF['db_host'], $CONF['db_user'], $CONF['db_pass'], $CONF['db_name']);
    if (
    $db->connect_error) { die("Connection failed : " $db->connect_error); }
    mysqli_set_charset($db,"utf8");

    // --------------------------------------------------------------------------------------

    $sql  "SELECT * FROM `table_01` ";
    $sql .= "UNION ALL SELECT * FROM `table_02` ";
    $sql .= "UNION ALL SELECT * FROM `table_03` ";

    $db_data $db->query($sql);

    while(
    $data $db_data->fetch_assoc())
    {
        echo 
    $data['name'] ."<br />";
    }
    ?>

    دیتابیس
    کد:
    DROP TABLE IF EXISTS `table_01`;
    CREATE TABLE `table_01` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
      KEY `id` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
    insert  into `table_01`(`id`,`name`) values (1,'ali'),(2,'reza');

    DROP TABLE IF EXISTS `table_02`;
    CREATE TABLE `table_02` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
      KEY `id` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
    insert  into `table_02`(`id`,`name`) values (1,'omid'),(2,'milad');

    DROP TABLE IF EXISTS `table_03`;
    CREATE TABLE `table_03` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
      KEY `id` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
    insert  into `table_03`(`id`,`name`) values (1,'sara'),(2,'maryam');
    (آخرین ویرایش در این ارسال: ۱۳۹۷ فروردين ۲۳ ۰۲:۵۰ عصر، توسط undefined.)
    ۱۳۹۷ فروردين ۲۳ ۰۲:۴۲ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Viva98
    undefined آفلاین
    احسان
    *******

    ارسال‌ها: 2,088
    تاریخ عضویت: ۱۳۸۸ مهر ۲۹
    اعتبار: 76
    تشکرها : 2005
    ( 2071 تشکر در 1219 ارسال )
    ارسال: #6
    RE: مشکل در اجرای چند کوئری به صورت همزمان
    @MiladWorkShop
    لطفا از تگ کد داخل ادیتور خودمون استفاده کنید و به جای دیگه ای لینک ندین. ممنون.
    __________________________________________________________________________
    هر چیزی که در جستن آنی آنی...
    (آخرین ویرایش در این ارسال: ۱۳۹۷ فروردين ۲۳ ۰۲:۵۰ عصر، توسط undefined.)
    ۱۳۹۷ فروردين ۲۳ ۰۲:۵۰ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Viva98
    Viva98 آفلاین
    عضو جدید
    **

    ارسال‌ها: 3
    تاریخ عضویت: ۱۳۹۷ فروردين ۲۳
    اعتبار: 0
    تشکرها : 5
    ( 0 تشکر در 0 ارسال )
    ارسال: #7
    RE: مشکل در اجرای چند کوئری به صورت همزمان
    (۱۳۹۷ فروردين ۲۳ ۰۲:۴۲ عصر)MiladWorkShop نوشته شده توسط:  درود

    فرض کنید 3 تیبل با نام های table_01 و table_02 و table_03 که میخوایید در یک WHILE از هر سه تیبل دیتا Select کنید

    این روش خیلی جالب نیست چون union all کوئری رو سنگین میکنه و اینکه برای استفاده از union all باید ساختار کوئری ها و تیبل ها یکی باشه که واسه من اینطور نیست و هرکدوم شرط و لیمیت و ... دارن و از چندین جدول مختلف هستن
    به هر حال ممنون ...
    ۱۳۹۷ فروردين ۲۳ ۱۰:۳۴ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS