• 11-10-2023, 12:59:44
    #1
    Merhabalar,

    Php ile database'e bağlanabilmek için bir sınıf kullanıyorum. Bu sınıfı kullanarak aynı projenin başka sayfalarında işlem yaptım. O sayfalarda da veri tabanından veriler çektim. Lakin ana sayfada veri çekmeye çalıştığımda hata alıyorum.

    Aldığım hata:
    Alıntı
    Rowlar çekilemedi: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'medigardiyan_db.musteri' doesn't exist
    PHP Class kodum:
    <?php
    namespace burhanaktas\db;
    use PDOException;
    class Database
    {
        private $host = "localhost";
        private $dbname = "tubur";
        private $uname = "root";
        private $pass = "";
        private $charset = "UTF8";
        private $collation = "utf8_general_ci";
        private $dsn;
        private $pdo;
        private $stmt = null;
        function __construct()
        {
            $this->ConnectDB();
        }
        function ConnectDB()
        {
            $this->dsn = "mysql:host=" . $this->host . ";dbname=" . $this->dbname . ";charset=UTF8";
            try {
                $this->pdo = new \PDO($this->dsn, $this->uname, $this->pass);
                $this->pdo->exec("SET NAMES '" . $this->charset . "' COLLATE '" . $this->collation . "'");
                $this->pdo->exec("SET CHARACTER SET '" . $this->charset . "'");
                $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
                $this->pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_OBJ);
            } catch (\PDOException $e) {
                die("Bağlanılamadı: " . $e->getMessage());
            }
        }
        function myQuery($query, $params)
        {
            if (is_null($params)) {
                $this->stmt = $this->pdo->query($query);
            } else {
                $this->stmt = $this->pdo->prepare($query);
                $this->stmt->execute($params);
            }
            return $this->stmt;
        }
        
        function getRows($query, $params = null)
        {
            try {
                return $this->myQuery($query,$params)->fetchAll();
            } catch (PDOException $e) {
                die("Rowlar çekilemedi: " . $e->getMessage());
            }
        }
        function getRow($query, $params = null)
        {
            try {
                return $this->myQuery($query,$params)->fetch();
            } catch (PDOException $e) {
                die("Row çekilemedi: " . $e->getMessage());
            }
        }
        function getColumn($query, $params = null)
        {
            try {
                return $this->myQuery($query,$params)->fetchColumn();
            } catch (PDOException $e) {
                die("Column çekilemedi: " . $e->getMessage());
            }
        }
        function Insert($query, $params = null)
        {
            try {
                $this->myQuery($query,$params);
                return $this->pdo->lastInsertId();
            } catch (PDOException $e) {
                if ($e->getCode() == 23000){
                    die("Bu kullanıcı adı var başka kullanıcı adı kullanın");
                }
            }
        }
        function Update($query, $params = null)
        {
            try {
                return $this->myQuery($query,$params)->rowCount();
            } catch (PDOException $e) {
                die("Ekleme Başarısız: " . $e->getMessage());
            }
        }
        function Delete($query, $params = null)
        {
            return $this->Update($query,$params);
        }
        function __destruct()
        {
            $this->pdo = null;
        }
    }
    Ana sayfada kullandığım kod:
    require "../classes/database.class.php";
    $db = new burhanaktas\db\Database;
    $musteri = $db->getRows("SELECT * FROM musteri");
    Hata Resmi:


    - php_errors.log da herhangii bir hata çıktısı ile karşılaşmadım.
    - php versiyonum: 8.1.10
    - MySql versiyonum: 8.0.30
    - Server olarak Laragon kullanıyorum

    Daha önceden "medigardiyan_db" diye bir veri tabanına bağlanmıştım lakin şimdi bağlantı ayarlarını değiştirdim ama eski veri tabanını görüyor hâla. Bir çözüm bulamadım.
  • 11-10-2023, 13:04:01
    #2
    Hala eski veritabanını görüyorsa bir cache veya dns yönlendirme gecikmesi olabilir. Domain tam olarak yönlendirilmiş (72 saat sürebilir), mysql bağlantılarını ve sorgularını içeren sayfalar cacheli çalışmıyor olmalıdır.

    Bunun dışında sorun devam ederse;

    o sayfanın en başına şunu ekleyip sayfadaki hatayı buraya yapıştırın.

    ini_set('display_errors',1);
    error_reporting(E_ERROR);
  • 11-10-2023, 13:08:04
    #3
    Dosya yoluna dikaktli bak. Dosya yolunda hata var gibi görünüyor.
  • 11-10-2023, 13:23:39
    #4
    neytocca adlı üyeden alıntı: mesajı görüntüle
    Dosya yoluna dikaktli bak. Dosya yolunda hata var gibi görünüyor.
    Requare ederken fazladan geri gitmişim. Teşekkürler
    • neytocca
    neytocca bunu beğendi.
    1 kişi bunu beğendi.