صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 11

موضوع: چک کردن وجود یک رکور با wpdb

  1. #1
    کاربر اخراج شده
    تاریخ عضویت
    Aug 2017
    نوشته ها
    37
    تشکر تشکر کرده 
    43
    تشکر تشکر شده 
    6
    تشکر شده در
    5 پست

    Question چک کردن وجود یک رکورد با wpdb

    سلام بر دوستان و اساتید

    برای اینکه چک کنم توی ذیتابیس یک رکورد وجود داره یا خیر باید چه کدی از wpdb رو استفاده کنم؟

    تشکر
    ویرایش توسط mehran-b : August 6th, 2017 در ساعت 13:39

  2. تعداد تشکر ها ازmehran-b به دلیل پست مفید


  3. # ADS




     

  4. #2
    کاربر اخراج شده
    تاریخ عضویت
    Aug 2017
    نوشته ها
    37
    تشکر تشکر کرده 
    43
    تشکر تشکر شده 
    6
    تشکر شده در
    5 پست

    پیش فرض پاسخ : چک کردن وجود یک رکورد با wpdb

    نقل قول نوشته اصلی توسط mehran-b نمایش پست ها
    سلام بر دوستان و اساتید

    برای اینکه چک کنم توی ذیتابیس یک رکورد وجود داره یا خیر باید چه کدی از wpdb رو استفاده کنم؟

    تشکر
    دوستان خواهشا یه کمکی بدید چند روزه گیر کردم روی این مورد.

    سپاس

  5. #3
    عضو دائم sazsaz آواتار ها
    تاریخ عضویت
    Aug 2011
    محل سکونت
    بندر گناوه
    نوشته ها
    1,123
    تشکر تشکر کرده 
    296
    تشکر تشکر شده 
    1,265
    تشکر شده در
    861 پست

    پیش فرض پاسخ : چک کردن وجود یک رکور با wpdb

    با تلگرام بنده تماس بگیر

  6. تعداد تشکر ها ازsazsaz به دلیل پست مفید


  7. #4
    عضو دائم T.Toosi آواتار ها
    تاریخ عضویت
    Jun 2015
    نوشته ها
    1,071
    تشکر تشکر کرده 
    278
    تشکر تشکر شده 
    2,936
    تشکر شده در
    1,329 پست

    پیش فرض پاسخ : چک کردن وجود یک رکور با wpdb

    کد PHP:
    $chk $wpdb->get_var"SELECT id FROM users WHERE id=1" );
    if(
    $chk !== null) echo 'exist'

  8. تعداد تشکر ها ازT.Toosi به دلیل پست مفید


  9. #5
    کاربر اخراج شده
    تاریخ عضویت
    Aug 2017
    نوشته ها
    37
    تشکر تشکر کرده 
    43
    تشکر تشکر شده 
    6
    تشکر شده در
    5 پست

    پیش فرض پاسخ : چک کردن وجود یک رکور با wpdb

    نقل قول نوشته اصلی توسط T.Toosi نمایش پست ها
    کد PHP:
    $chk $wpdb->get_var"SELECT id FROM users WHERE id=1" );
    if(
    $chk !== null) echo 'exist'
    این کد توی foreach در کمال ناباوری درست کار نمیکنه.

    تابعی که باهاش توی دیتابیس میخوام رکورد هامو ست کنم الان این شکلیه:

    کد PHP:

    <?function nap_add_post_to_db($post_links = array(), $source_name) {            if(!empty($post_links)) :    
            global $wpdb;    $table_name = NAPTABLE;            foreach($post_links as $link) :                if(is_null($wpdb->get_var("SELECT id FROM $table_name WHERE link='$link'")))            $wpdb->query($wpdb->prepare("INSERT INTO $table_name (link, source_name) VALUES (%s, %s)", $link, $source_name));                endforeach;        endif;    }?>
    کد خوب همون طور که مشخصه باید درست عمل کنه ولی درست عمل نمیکنه.

  10. #6
    عضو انجمن AtrafNet آواتار ها
    تاریخ عضویت
    Nov 2016
    نوشته ها
    259
    تشکر تشکر کرده 
    2,584
    تشکر تشکر شده 
    729
    تشکر شده در
    417 پست

    پیش فرض پاسخ : چک کردن وجود یک رکور با wpdb

    کدتون رو دیدم ظاهراً می خواید کوئری INSERT رو اگر ردیف مورد نظر وجود نداشت اجرا کنید درسته؟
    اگه اینطوره به جای بررسی وجود ردیف مورد نظر در جدول می تونید از $wpdb->replace استفاده کنید که توضیحی که خود وردپرس در بخش CODEX دربارش نوشته اینه:

    کد:
    Replace a row in a table if it exists or insert a new row in a table if the row did not already exist.
    یعنی اگر ردیف مورد نظر وجود داشته باشه با ویرایش جدید جایگزین میشه اگرم نباشه خودکار خودش INSERT انجام میده.

    تو این لینک اسمشو سرچ کنید هست: https://codex.wordpress.org/Class_Reference/wpdb

  11. تعداد تشکر ها ازAtrafNet به دلیل پست مفید


  12. #7
    کاربر اخراج شده
    تاریخ عضویت
    Aug 2017
    نوشته ها
    37
    تشکر تشکر کرده 
    43
    تشکر تشکر شده 
    6
    تشکر شده در
    5 پست

    پیش فرض پاسخ : چک کردن وجود یک رکور با wpdb

    نقل قول نوشته اصلی توسط AtrafNet نمایش پست ها
    کدتون رو دیدم ظاهراً می خواید کوئری INSERT رو اگر ردیف مورد نظر وجود نداشت اجرا کنید درسته؟
    اگه اینطوره به جای بررسی وجود ردیف مورد نظر در جدول می تونید از $wpdb->replace استفاده کنید که توضیحی که خود وردپرس در بخش CODEX دربارش نوشته اینه:

    کد:
    Replace a row in a table if it exists or insert a new row in a table if the row did not already exist.
    یعنی اگر ردیف مورد نظر وجود داشته باشه با ویرایش جدید جایگزین میشه اگرم نباشه خودکار خودش INSERT انجام میده.

    تو این لینک اسمشو سرچ کنید هست: https://codex.wordpress.org/Class_Reference/wpdb
    به مورد خوبی اشاره کردید. الان تابع من به این شکل شده.

    حالا مشکل اینه که مثلا یه آرایه 20 تایی بدی به تابع 7 تاش یا 8 تاش ثبت میشه توی دیتابیس.

    والا موندم مشکل از کجاست.

  13. #8
    عضو انجمن AtrafNet آواتار ها
    تاریخ عضویت
    Nov 2016
    نوشته ها
    259
    تشکر تشکر کرده 
    2,584
    تشکر تشکر شده 
    729
    تشکر شده در
    417 پست

    پیش فرض پاسخ : چک کردن وجود یک رکور با wpdb

    نقل قول نوشته اصلی توسط mehran-b نمایش پست ها
    به مورد خوبی اشاره کردید. الان تابع من به این شکل شده.

    حالا مشکل اینه که مثلا یه آرایه 20 تایی بدی به تابع 7 تاش یا 8 تاش ثبت میشه توی دیتابیس.

    والا موندم مشکل از کجاست.

    مطمئنید آرایه 20 تا آیتم داره؟ با print_r تست کردید؟
    قبلاً چنین اتفاقی برای وجود یه سری کاراکتر های خاص تو بعضی آیتم ها برام پیش میامد تو آیتم ها کاراکتر های خاصی هم وجود نداره؟
    می خواید یه بار با حلقه for به صورت همون 20 تایی که گفتید اجرا کنید اصولاً اگه ID وجود نداشته باشه باید اخطار بده.
    خروجی $wpdb->replace هم بررسی کنید که false نباشه چون اگر درست انجام بشه عدد تعداد ردیف هایی که تغییر کردن رو پس میده ولی اگه خروجی اش false باشه یعنی مشکلی هست.
    فکر کنم با تابع $wpdb->print_error() میشه ارور آخرین کوئری اجرا شده رو نمایش داد.

  14. تعداد تشکر ها ازAtrafNet به دلیل پست مفید


  15. #9
    کاربر اخراج شده
    تاریخ عضویت
    Aug 2017
    نوشته ها
    37
    تشکر تشکر کرده 
    43
    تشکر تشکر شده 
    6
    تشکر شده در
    5 پست

    پیش فرض پاسخ : چک کردن وجود یک رکور با wpdb

    نقل قول نوشته اصلی توسط AtrafNet نمایش پست ها
    مطمئنید آرایه 20 تا آیتم داره؟ با print_r تست کردید؟
    قبلاً چنین اتفاقی برای وجود یه سری کاراکتر های خاص تو بعضی آیتم ها برام پیش میامد تو آیتم ها کاراکتر های خاصی هم وجود نداره؟
    می خواید یه بار با حلقه for به صورت همون 20 تایی که گفتید اجرا کنید اصولاً اگه ID وجود نداشته باشه باید اخطار بده.
    خروجی $wpdb->replace هم بررسی کنید که false نباشه چون اگر درست انجام بشه عدد تعداد ردیف هایی که تغییر کردن رو پس میده ولی اگه خروجی اش false باشه یعنی مشکلی هست.
    فکر کنم با تابع $wpdb->print_error() میشه ارور آخرین کوئری اجرا شده رو نمایش داد.
    خروجی $wpdb->replace همش یک هست یعنی 20 تا 1 خروجیش میشه.
    اون مورد ثبت نشدن 20 رکورد مربوط به استرکچر دیتابیسم بود که روی VARCHAR گذاشته بودم که خوب از 255 کاراکتر بالا زده بود بعضی لینک ها ثبت نمیشد که کردمش TEXT حل شد.
    در کل اروری در کار نیست ولی بازم مشکل داره و رکورد های تکراری ست میکنه.
    لینک ها چون فارسی ان به شکل rawurlencode هستند مشکلی داره؟

  16. #10
    عضو انجمن AtrafNet آواتار ها
    تاریخ عضویت
    Nov 2016
    نوشته ها
    259
    تشکر تشکر کرده 
    2,584
    تشکر تشکر شده 
    729
    تشکر شده در
    417 پست

    پیش فرض پاسخ : چک کردن وجود یک رکور با wpdb

    نقل قول نوشته اصلی توسط mehran-b نمایش پست ها
    خروجی $wpdb->replace همش یک هست یعنی 20 تا 1 خروجیش میشه.
    اون مورد ثبت نشدن 20 رکورد مربوط به استرکچر دیتابیسم بود که روی VARCHAR گذاشته بودم که خوب از 255 کاراکتر بالا زده بود بعضی لینک ها ثبت نمیشد که کردمش TEXT حل شد.
    در کل اروری در کار نیست ولی بازم مشکل داره و رکورد های تکراری ست میکنه.
    لینک ها چون فارسی ان به شکل rawurlencode هستند مشکلی داره؟
    شاید به خاطر همین فارسی و rawurlencode بودن لینک ها نتونستید از روشی که جناب طوسی دادن استفاده کنید چون طوری که من در کد اول شما دیدم شما برای پیدا کردن row مورد نظر در کوئری جلوی WHERE از شرط یکسان بودن محتوای لینک ها استفاده کردید میگم شاید چون لینک ها طولانیه و فارسی انکد شده هستن نمی تونه مقایسه درستی انجام بده و یکسان پیدا نمیکنه.
    چون معمولاً تو این شرایط از ID برای پیدا کردن row های موجود استفاده میکنن اما اگه شما به ID دسترسی ندارید به نظرم اگه یه مقدار منحصر به فرد بهتری نسبت به لینک که انگلیسی باشه و کوتاه بهتر عمل کنه.

    درباره wpdb->replace هم به نظرم ممکنه یه تغییر کوچکی در محتوای لینک های جدید احساس کرده که یکسان اضافه کرده مثلاً فکر کنید یه فاصله اضافی تو لینک ها هم می تونه ردیف جدید حساب بشه البته مسلماً فاصله های قبل و بعد و سایر عمل های بررسی ورودی رو انجام دادید ولی پیشنهاد میکنم یه بار محتویات row های یکسان اضافه شده رو با هم مقایسه کنید ببینید واقعاً یکسان هستن یا نه.

  17. تعداد تشکر ها از AtrafNet به دلیل پست مفید


صفحه 1 از 2 12 آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •