v2.5.2
Giriş yap

Gelecek Primary Key Değerini Öğrenmek

coder
271 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");
Cevap yaz
Cevaplar (5)
ebykdrms
538 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.

coder
537 gün önce

@admin örneğin bir kayıt sonrası direkt olarak o id'ye yönlendirmek için.

admin
537 gün önce

böyle bir şeye neden ihtiyaciniz var ?

coder
537 gün önce

@ebykdrms, @gokcin teşekkür ederim.
Aşağıdaki şekilde çözdüm.

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

Merhaba,

$gelecekId = $db->query("SHOW TABLE STATUS LIKE 'tabloadiniz'")->fetch(PDO::FETCH_ASSOC)['Auto_increment'];

Bu şekilde gelecek ID bulabilirsin.