۴ امیر محمد وثوقی
خطا در اجرای isUserExists
جامعه پی اچ پی ایجاد شده در ۰۹ خرداد ۱۴۰۲

Uncaught PDOException: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected in C:\\xampp\\htdocs\\7Learn.php\\project\\7Auth\\libs\\auth-lib.php:8 Stack trace: #0 C:\\xampp\\htdocs\\7Learn.php\\project\\7Auth\\libs\\auth-lib.php(8): PDOStatement->execute(Array) #1 C:\\xampp\\htdocs\\7Learn.php\\project\\7Auth\\auth.php(18): isUserExists('info@gmail.com', '12345678') #2 {main} thrown in C:\\xampp\\htdocs\\7Learn.php\\project\\7Auth\\libs\\auth-lib.php on line 8


function isUserExists(string $email, string $phone): bool
{
    global $pdo;
    $sql = 'SELECT * FROM `users` WHERE `email` = :email OR `phone` = :phone; ';
    $stmt = $pdo->prepare($sql);
    $stmt->execute([':email' => $email , ':phone' => $phone]);
    $record = $stmt->fetch(PDO::FETCH_OBJ);
    return $record ? true : false;
}


سلام امیرمحمد عزیز

در متغیر pdo دیتابیس موردنظر رو انتخاب نکردید.

کد متغیر pdo رو بررسی کنید که $db که نام دیتابیس پروژه هست رو به شکل زیر قرار داده باشد.

$db="mydb";
$connnew PDO("mysql:host=$servername;dbname=$db", $username, $password);
احمدرضا فاطمی کیا ۰۹ خرداد ۱۴۰۲، ۰۷:۰۵

:config file

$database_config = (object) [
    "dbname" => "7auth",
    "host" => "localhost",
    "user" => "root",
    "pass" => "",
    "charset" => "utf8mb4"
];

:conection

try {
    $pdo = new PDO("mysql:db=$database_config->dbname;host=$database_config->host; charset=$database_config->charset" , $database_config-> user , $database_config->pass);
    echo "connect to db was successfully" . '
'; } catch (PDOException $e) {     echo "can not connect to db Error -> " . $e->getMessage();    die(); }
امیر محمد وثوقی ۰۹ خرداد ۱۴۰۲، ۰۷:۱۳

درست شبیه ویدیو زدم

امیر محمد وثوقی ۰۹ خرداد ۱۴۰۲، ۰۸:۱۳

آرگومان‌ها رو اشتباه پاس دادید.

کد متغیرpdo رو به شکل زیر تغییر بدید و به جای متغیرها از کانفیگ مدنظر استفاده کنید.

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "mydb";
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
بهترین پاسخ
احمدرضا فاطمی کیا ۰۹ خرداد ۱۴۰۲، ۰۸:۱۵