۷ محمد
عملیات متد find نمیتواند اجرا شود
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۱۴ بهمن ۱۴۰۱

سلام

ببخشید من ارتباط با پایگاه داده برقرار میشود در کدم،ولی عملیات crud انجام نمیشود،مثلا همین متد اول find تعریف کردن برای من کلا false برمیگرداند،

در phpstorm اون قسمت که خطا‌ها رو نشان می‌دهد تمام خطا‌ها رو برطرف کردم و ارور ی هم در اون بخش نیست،

علت نشان ندادن و وردامپ نشدن چی میتواند باشد؟

  • متد find رو من printInfo نام گذاری کردم

316c-code.pngپایگاه داده :

beec-image_2023-02-03_165953606.png

db = new PDO("mysql:dbname:wordpress.ex
p; host=localhost", 'root', '');
            echo 'OKKKKKKey' . PHP_EOL;
        } catch (PDOException $e) {
            die('connection failed:' . $e->getMessage());
        }
    }
    public function printInfo($id)
    {
        $sql = "SELECT * FROM `swp_user` where id = :id";
        $stmt = $this->db->prepare($sql);
        $stmt->execute([':id' => $id]);
        return $stmt->fetch(PDO::FETCH_OBJ);
    }
    public function update($data)
    {
    }
    public function delete($data)
    {
    }
    public function create($data)
    {
    }
}
$userA = new user();
$userData = $userA->printInfo(1);
var_dump($userData);


383e-image_2023-02-03_201242551.png

محمد ۱۴ بهمن ۱۴۰۱، ۱۶:۳۹

با سلام و احترام

باتوجه به چیزی که ضمیمه کرده اید شما در اصل نباید اتصال صحیحی داشته باشید چون در اتصال pdo در قسمت dbname به جای = از : استفاده شده است.

new PDO("mysql:dbname=wordpress.exp;host=localhost", 'root', '');

سپس قبل از زدن کوئری پراپرتی $db را Var_dump کنید تا بررسی کنید که آبجت PDO به درستی در دسترس هست یا خیر

موفق باشید

بهنام مرادی ۱۷ بهمن ۱۴۰۱، ۱۰:۴۴

دوست عزیز اصلا نیازی به ایجاد کانشکن دیتابس با PDO نیست !!!کافیه از کلاس $wpdb استفاده کنید خودش کانکشن رو برقرا می‌کنه.

روش کوئری هاتون اگر طبق وردپرس کدنویسی می‌کنید اصلا درست نیست چو توابع و متدهای زیادی برای کار با دیتابس داره خودش

وحید صالحی ۱۷ بهمن ۱۴۰۱، ۱۹:۴۹

ممنون جناب صالحی،من بر طبق ویدیوی اموزش جلو رفتم و اون قسمت برقراری ارتباط با database با متدهای وردپرس رو که گفتید فصل اون هنوز نرسیدم،

راستش من PDO اصلا نمیدونم چی هست و متوجه اون catch نشدم برای بستن تسک try هست ؟اون $e برای چی اورده شده؟ آیا die کاری شبه break شکستن انجام میدهد؟

ولی براساس دوره قبلی اینجوری میشود درسته؟: گلوبال رو خارج از کلاس میتونم بیارم یا در متد تعریف بشود ؟ چون از کلاس و شیگرایی استفاده میکنیم تفاوتی ندارد؟

public function __construct()
{
    try {
        global $wpdb;
        $this->db = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}users");
        echo 'OKKKKKKey' . PHP_EOL;
    }
    catch (PDOException $e) {
            die('connection failed:' . $e->getMessage());
        }
    }


ارور دارد این کد، سینتکs خطا نداد در phpstorm ولی ارور fatal داد که درباره فراخوانی اعضا کلاس get_result هست


b1a0-image_2023-02-07_014851987.png

بیش ازین از شما جناب صالحی از وقتی که میگذارید پاسخ میدهید ممنونم .

محمد ۱۷ بهمن ۱۴۰۱، ۲۲:۳۰

تشکر و ممنون اقای مرادی

من اون کاری گفتید کردم ولی خطا میدهد ولی حالتی قبلی رو خطایی نمیدهد

همون که گفتید :

در اتصال pdo در قسمت dbname به جای = از : استفاده شده است.

من = گذاشتم خطای سینتکس داد و همون : رو قبول کرد.


محمد ۱۷ بهمن ۱۴۰۱، ۲۲:۳۳

صبر کنید به بخش کار با دیتابس وردپرس مخصوصا پلاگین‌ها برسیم قشنگ درک خواهید کرد مخصوصا در شی گرایی

بهترین پاسخ
وحید صالحی ۲۱ بهمن ۱۴۰۱، ۱۸:۳۴

تشکر :)

محمد ۲۱ بهمن ۱۴۰۱، ۲۰:۴۸