Gelecek Primary Key Değerini Öğrenmek
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");
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (5)
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.
@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);
}