v2.5.2
Giriş yap

Gelecek Primary Key Değerini Öğrenmek

coder
349 defa görüntülendi

Merhaba.

Veritabanındaki tablomun en son primary key değerinden sonra gelecek olan key değerini öğrenmek istiyorum.
Ancak hata alıyorum.

Bu kodu phpmyadmin'de çalıştırdığım zaman hata almıyorum.

    SHOW TABLE STATUS FROM php_deneme WHERE Name='test';

Php üzerinden denediğim zaman şu hatayı alıyorum.

Hata nerede. Yardımcı olur musunuz?

Kodlarım

DB.php

<?php

class DB
{
    const HOST      = "localhost";
    const USERNAME  = "root";
    const PASSWORD  = "";
    const DATABASE  = "php_deneme";

    protected static $connection;

    public function __construct()
    {
        self::__connect();
    }

    public static function __connect()
    {
        try{
            self::$connection = new PDO("mysql:host=".self::HOST.";dbname=".self::DATABASE.";charset=utf8",self::USERNAME,self::PASSWORD);
        }catch(PDOException $error){
			return $error->getMessage();
            exit();
        }
    }

    public static function primaryID($tableName){
        $SQL ="SHOW TABLE STATUS FROM ". self::DATABASE ." WHERE Name='". $tableName ."'";
        $E = self::$connection->query($SQL);
        $Result = $E->fetchAll(PDO::FETCH_ASSOC);
        var_dump($Result);
    }
}

index.php

<?php
include_once ("class/DB.php");

DB::primaryID("test");
ebykdrms
740 gün önce

Muhtemelen $E = self::$connection->query($SQL); komutunu verdiğiniz sırada henüz $connection değişkenine değer atanmamış oluyor.
DB::primaryID("test"); satırını çalıştırmadan önce __connect() fonksiyonunu çalıtırmanız gerekiyor.
Siz __construct() fonksiyonuyla $connection değişkeninize değer atıyorsunuz ama primaryID() class'ı statik olarak çağırdığınızda __construct() fonksiyonu çağırılmaz.
Hata aldığınız satırdan bir önceki satırda $connection değerinin null olup olmadığını kontrol etmeli ve buna göre hareket etmelisiniz.
Hata mesajı da bundan bahsediyor: null bir değerden query() diye bir fonksiyon çağırıyorsunuz.