Mysql 1364 Field doesn’t have a default value hatası çözümü

Phpmyadmin güncellemesi ile birlikte bu hatayı alanlar uyarıda geçen tabloya tıkladıktan sonra Yapı menüsünden ilgili sütunu seçerek Yapı linkine tıklayın.

Varsayılan değeri yok olan AutoIncrement(id) hariç olan sütunları değiştir seçeneğine tıklayın

Varsayılan değer olarak NULL veya tanımlı bir değer girerek kaydedin.

MyDB ile Mysqli Veritabanı Sorgu ve Hata İzleme

<?php
class myDB{ 
	var $link;
	function __construct(){
		$dbserver = "localhost";
		$dbuser = "root"; 
		$dbpass = "";  
		$dbname = "php";	
		$this->link = mysqli_connect($dbserver,$dbuser,$dbpass,$dbname);
	}
  function sqli(){
		$sorgu = func_get_arg(0); 
		if (!$veri = mysqli_query($this->link,$sorgu)){
			if(func_num_args()>1){ 
				$aranan = basename(func_get_arg(1));             
			}else{ 
				$aranan = "<i>bilinmeyen</i>"; 
			} 
			if(func_num_args()>2){ 
				$satir = func_get_arg(2);
			}else{ 
				$satir = "<i>bilinmeyen</i>"; 
			} 
			trigger_error("<p style=\"color:#ff0000;\"><b>MYDB-HATA:<br />Sorgu</b> ".$sorgu." <b> hata döndürdü.</b><br />".mysqli_error($this->link)." <br /> ".$aranan." <b>dosyasında satır</b> ".$satir." </p>", E_USER_WARNING); 
		} 
		$dizi = explode(" ",$sorgu); 
		$dizi[0] = strtoupper($dizi[0]); 
		if ($dizi[0]=="SELECT"){ 
			$say = mysqli_num_rows($veri); 
		}else{ 
			$say = mysql_affected_rows(); 
		} 
		return array($veri, $say); 
	}
	function __destruct(){
		mysqli_close($this->link);
	}
}
$my = new myDB;	
list($veri, $say) = $my->sqli("SELECT id,sayfa FROM php limit 2",__FILE__,__LINE__);
foreach($veri as $a){
	print_r($a);
}
?>

Çıktısı

Array
(
    [id] => 1
    [sayfa] => 7
)
Array
(
    [id] => 2
    [sayfa] => 3
)

Hata testi

$my = new myDB;	
list($veri, $say) = $my->sqli("WHERE SELECT FROM php",__FILE__,__LINE__);
foreach($veri as $a){
	print_r($a);
}

Hata Çıktısı

Warning:
MYDB-HATA:
Sorgu WHERE SELECT FROM php hata döndürdü.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE SELECT FROM php' at line 1 
index.php dosyasında satır 40

in C:\www\index.php on line 24

Warning: Invalid argument supplied for foreach() in C:\www\index.php on line 41

 

Warning: get_class() called without object from outside a class in Hatası Çözüm

Hata Örneği

<?php
class sinif{
	public static function OrnekAl(){
		return null;
	}
}
class test extends sinif{}
echo get_class(test::OrnekAl());
?>

get_class ile bir sınıf ismi döndürmek istedik. Fakat dönen test::OrnekAl() sonucu bir fonksiyon içindeki null‘dü. Düzeltmek için aşağıdaki yöntemler kullanılabilir.

1.Ana ismi almak için fonksiyon sonucunu static sınıfa çevirmek

<?php
class sinif{
	public static function OrnekAl(){
		return new static;
	}
}
class test extends sinif{}
echo get_class(test::OrnekAl());
?>

2.Ana ismi almak için fonksiyon ismini kaldırmak

<?php
class sinif{
	public static function OrnekAl(){
		return null;
	}
}
class test extends sinif{}
echo get_class(new test);
?>

3.Alt ismi almak için sınıfı döndürmek

<?php
class sinif{
	public static function OrnekAl(){
		return new sinif;
	}
}
class test extends sinif{}
echo get_class(test::OrnekAl());
?>

4.Alt ismi almak için direk sınıfı çağırmak

<?php
class sinif{
	public static function OrnekAl(){
		return null;
	}
}
class test extends sinif{}
echo get_class(new sinif);
?>

 

Önemli Ortak Kullanılabilecek Komutlar

<?php
ob_start();//html boşluklarını sıkıştırma
session_start();//oturum başlatma
header('Content-Type: text/html; charset=utf-8');//karakter seti seçimi
header("Cache-Control: no-cache, must-revalidate"); //önbellek almamak için
error_reporting (E_ERROR | E_WARNING | E_PARSE);//hataları göstermek için
set_time_limit(0);//zaman aşımı önlemek için
extract($_POST,EXTR_SKIP); //$_POST["id"] yi $id'ye çevirir
extract($_GET,EXTR_SKIP); //$_GET["id"] yi $id'ye çevirir
extract($_COOKIE,EXTR_SKIP);//$_COOKIE["id"] yi $id'ye çevirir

/*
sayfa içeriği
*/


ob_end_flush();
?>