MyDB ile Mysqli Veritabanı Sorgu ve Hata İzleme

PHP
44 lines
<?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);
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

PHP
10 lines
Array
(
[id] => 1
[sayfa] => 7
)
Array
(
[id] => 2
[sayfa] => 3
)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Hata testi

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

Hata Çıktısı

Markdown
9 lines
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
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Sql Dosyasındaki Sorguları Alma ve Sıkıştırma

PHP
29 lines
<?php
class sorguCikarici{
private $dosyaAdi;
private $icerik;
public $sqlSorgulari;
public function __construct($dosyaYeri = ''){
if(strlen($dosyaYeri) < 1){
$this->dosyaAdi = '';
}else{
$this->dosyaAdi = $dosyaYeri;
}
}
public function sorgulariCikart(){
$sql=file($this->dosyaAdi);
foreach($sql as $s){
$ek=substr($s, 0, 2);
if(($ek != "--" and $ek != "/*") AND $s != "\n"){
$this->icerik.=$s;
}
}
$this->icerik=trim(preg_replace('/\s\s+/', ' ', $this->icerik));
$this->icerik = preg_replace('~[\r\n]+~', '', $this->icerik);
file_put_contents($this->dosyaAdi,$this->icerik);
return $this->icerik;
}
}
$sc = new sorguCikarici(dirname(__FILE__)."/data.sql");
$sc->sorgulariCikart();
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Örnek data.sql

SQL
83 lines
-- phpMyAdmin SQL Dump
-- version 4.1.4
-- http://www.phpmyadmin.net
--
-- Anamakine: 127.0.0.1
-- Üretim Zamanı: 02 Haz 2018, 00:41:47
-- Sunucu sürümü: 5.6.15-log
-- PHP Sürümü: 5.4.24
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Veritabanı: `destek`
--
-- --------------------------------------------------------
--
-- Tablo için tablo yapısı `mesajlar`
--
CREATE TABLE IF NOT EXISTS `mesajlar` (
`mno` int(10) unsigned NOT NULL AUTO_INCREMENT,
`kim` int(11) DEFAULT NULL,
`zaman` datetime DEFAULT NULL,
`ticketid` int(60) DEFAULT NULL,
`mesaj` text CHARACTER SET latin5 NOT NULL,
`y` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`mno`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tablo için tablo yapısı `urunler`
--
CREATE TABLE IF NOT EXISTS `urunler` (
`uno` int(10) unsigned NOT NULL AUTO_INCREMENT,
`urun_adi` text CHARACTER SET latin5,
`urun_fiyat` int(4) DEFAULT NULL,
`urun_kimin` int(4) DEFAULT NULL,
`urun_durumu` int(11) DEFAULT '0',
`urun_bilgisi` text CHARACTER SET latin5,
`urun_aciklama` text CHARACTER SET latin5,
`urun_bitistarihi` date DEFAULT NULL,
`urun_odemedurumu` int(1) NOT NULL DEFAULT '1',
`urun_sipariszamani` datetime NOT NULL,
`urun_alistarihi` date DEFAULT NULL,
PRIMARY KEY (`uno`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Tablo için tablo yapısı `uyeler`
--
CREATE TABLE IF NOT EXISTS `uyeler` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`kadi` varchar(15) DEFAULT NULL,
`tel` varchar(11) DEFAULT NULL,
`sifre` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Tablo döküm verisi `uyeler`
--
INSERT INTO `uyeler` (`id`, `kadi`, `tel`, `sifre`) VALUES
(1, 'admin', '5420', '14e1b6');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı data.sql

SQL
1 lines
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";SET time_zone = "+00:00";CREATE TABLE IF NOT EXISTS `mesajlar` ( `mno` int(10) unsigned NOT NULL AUTO_INCREMENT, `kim` int(11) DEFAULT NULL, `zaman` datetime DEFAULT NULL, `ticketid` int(60) DEFAULT NULL, `mesaj` text CHARACTER SET latin5 NOT NULL, `y` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`mno`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;CREATE TABLE IF NOT EXISTS `urunler` ( `uno` int(10) unsigned NOT NULL AUTO_INCREMENT, `urun_adi` text CHARACTER SET latin5, `urun_fiyat` int(4) DEFAULT NULL, `urun_kimin` int(4) DEFAULT NULL, `urun_durumu` int(11) DEFAULT '0', `urun_bilgisi` text CHARACTER SET latin5, `urun_aciklama` text CHARACTER SET latin5, `urun_bitistarihi` date DEFAULT NULL, `urun_odemedurumu` int(1) NOT NULL DEFAULT '1', `urun_sipariszamani` datetime NOT NULL, `urun_alistarihi` date DEFAULT NULL, PRIMARY KEY (`uno`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;CREATE TABLE IF NOT EXISTS `uyeler` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `kadi` varchar(15) DEFAULT NULL, `tel` varchar(11) DEFAULT NULL, `sifre` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;INSERT INTO `uyeler` (`id`, `kadi`, `tel`, `sifre`) VALUES(1, 'admin', '5420', '14e1b6');
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Sql Katman Mysqli Veritabanı Sınıfı

PHP
80 lines
<?php
class SQLKatman {
var $sunucu;
var $kullaniciadi;
var $sifre;
var $veritabaniadi;
var $link;
function SQLKatman ($sunucu = "", $kullaniciadi = "", $pass = "", $veritabaniadi = "") {
$this->sunucu = $sunucu;
$this->kullaniciadi = $kullaniciadi;
$this->sifre = $pass;
$this->veritabaniadi = $veritabaniadi;
$this->baglan();
}
function baglan(){
$this->link=mysqli_connect($this->sunucu,$this->kullaniciadi,$this->sifre,$this->veritabaniadi);
mysqli_set_charset($this->link, "utf8");
}
function close(){
return mysqli_close($this->link);
}
function sorgu($sorgu){
$this->rs=mysqli_query($this->link,$sorgu);
if (!$this->rs){
echo("Hata: Hatalı sorgu \"".$sorgu."\"...<br>");
echo("Hata: ".mysqli_errno($this->link)."<br>");
die("Hata: ".mysqli_error($this->link)."<br>");
}else{
return $this->rs;
}
}
function veri_ara ($row = 0) {
return mysqli_data_seek($this->rs,$row);
}
function dizi_getir($rs=""){
if($rs==""){$rs=$this->rs;}
$this->row=mysqli_fetch_array($rs);
return $this->row;
}
function birles_getir($rs=""){
if($rs==""){$rs=$this->rs;}
$this->row=mysqli_fetch_assoc($rs);
return $this->row;
}
function nesne_getir($rs=""){
if($rs==""){$rs=$this->rs;}
$this->row=mysqli_fetch_object($rs);
return $this->row;
}
function satir_say($rs=""){
if($rs == ""){$rs=$this->rs;}
$rs = $this->rs;
return mysqli_num_rows($rs);
}
function etkilenen_satir() {
return mysqli_affected_rows($this->link);
}
function serbest_sonuc($rs = "") {
if($rs == ""){$rs=$this->rs;}
$rs = $this->rs;
return mysqli_free_result($rs);
}
}
$s=new SQLKatman("localhost","root","","php");
$s->sorgu("select * from php where id=1");
print_r($s->dizi_getir());echo "<br>";
$s->sorgu("select * from php where id=1");
print_r($s->birles_getir());echo "<br>";
$s->sorgu("select * from php where id=1");
print_r($s->nesne_getir());echo "<br>";
$s->sorgu("select * from php where id=1");
print_r($s->satir_say());echo "<br>";
$s->sorgu("select * from php where id=1");
print_r($s->etkilenen_satir());echo "<br>";
$s->sorgu("select * from php where id=1");
print_r($s->serbest_sonuc());
$s->sorgu("select * from php where id=1");
var_dump($s->veri_ara(2));
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

PHP
6 lines
Array ( [0] => 1 [id] => 1 )
Array ( [id] => 1 )
stdClass Object ( [id] => 1 )
1
1
bool(false)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Localhost ve Web Seçmeli Veritabanı

Tek bir uygulamayı hem localhost’da düzenleyip hem sitenizde yayınlarken büyük kolaylık. Veritabanı bilgilerini değiştirmeden ikisinde birden rahatlıkla çalışabileceksiniz.

PHP
59 lines
<?php header('Content-Type: text/html; charset=utf-8');
function remote_connect($dbhost,$dbuser,$dbpass,$dbname,$lang){
if($lang="en"){//Eng Lang
$error_db_connect_www='<!--Could not connect to the online database-->';
$error_dbselect_www='<!--Online database not selected-->';
$connect_ok_www='<!--Connected to the online database-->';
$error_db_connect_local='<!--Could not connect to the local database-->';
$error_dbselect_local='<!--Local database not selected-->';
$connect_ok_local='<!--Connected to the local database-->';
}
if($lang="tr"){//Tr Dil
$error_db_connect_www='<!--Çevrimiçi veritabanı ile bağlantı sağlanamadı-->';
$error_dbselect_www='<!--Çevrimiçi veritabanı seçilemedi-->';
$connect_ok_www='<!--Çevrimiçi veritabanına bağlanıldı-->';
$error_db_connect_local='<!--Yerel veritabanı ile bağlantı sağlanamadı-->';
$error_dbselect_local='<!--Yerel veritabanı seçilemedi-->';
$connect_ok_local='<!--Yerel veritabanına bağlanıldı-->';
}
$connect = @mysql_connect($dbhost["www"], $dbuser["www"] , $dbpass["www"]);
if(!$connect){
echo $error_db_connect_www;
}
$db = @mysql_select_db( $dbname["www"] , $connect);
if($db){
echo $connect_ok_www;
}
else{
echo $error_dbselect_www;
$connect = @mysql_connect($dbhost["local"], $dbuser["local"] , $dbpass["local"]);
if(!$connect){
echo $error_db_connect_local;
}
$db = @mysql_select_db( $dbname["local"] , $connect);
if($db){
echo $connect_ok_local;
}
else{
echo $error_dbselect_local;
}
}
}
$db_host=array();
$db_user=array();
$db_pass=array();
$db_name=array();
//www Connect
$db_host["www"] = "localhost";
$db_user["www"] = "";
$db_pass["www"] = "";
$db_name["www"] = "p";
//Local Connect
$db_host["local"] = "localhost";
$db_user["local"] = "root";
$db_pass["local"] = "";
$db_name["local"] = "survivor";
$lang ="tr"; //en
remote_connect($db_host,$db_user,$db_pass,$db_name,$lang);
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX