Pdo Veritabanı Sınıfı

<?php 
// bağlantı ayarları///////////////////////////////////////////////////////////////////////////////
Class dbConfig extends PDO {

	protected $dbConfig = array();

    protected function createConfig() {
        $this->dbConfig['host'] = 'localhost';
        $this->dbConfig['username'] = 'root';
        $this->dbConfig['password'] = '';
        $this->dbConfig['dbname'] = 'test';
    }

}
// veritabanı sınıfı //////////////////////////////////////////////////////////////////////////////
Class Database extends dbConfig {

	protected $connection;

	function __construct() {

		parent::createConfig();
		try{
			$dsn = 'mysql:host=' . $this->dbConfig['host'] . ';dbname=' . $this->dbConfig['dbname'];
			$this->connection = new PDO($dsn, $this->dbConfig['username'], $this->dbConfig['password']);
            		$this->connection->query("SET NAMES utf8");
        	 	$this->connection->query("SET CHARACTER SET utf8");
            		$this->connection->query("SET COLLATION_CONNECTION = 'utf8_general_ci");
			return true;
		}catch(PDOException $error){
			$errorMesage = 'Hata : Veritabanı bağlantısı kurulamadı !<br>Hata Mesajı =>'.$error->getMessage();
			return $errorMesage;
		}
    }

	public function selectOr($table, $array = null) {
		if($array == null){
			$sql = "SELECT * FROM ".$table;
		}else{			
			$columns = array_keys($array);
			$values = array_values($array);
			$sqlString = "";
			for($i=0;$i<count($columns);$i++){
				if($i==count($columns)-1){
					$sqlString .= $columns[$i]." = '".$values[$i]."' ";
				}else{
					$sqlString .= $columns[$i]." = '".$values[$i]."' or ";
				}
			}
			$sql = "SELECT * FROM ".$table." WHERE ".$sqlString;
		}
        $select = $this->connection->query($sql);
        if ($select) {
            $row = $select->fetchAll();
            return $row;
        } else {
            return false;
        }
	}

	public function selectAnd($table, $array = null) {

		if($array == null){
			$sql = "SELECT * FROM ".$table;
		}else{			
			$columns = array_keys($array);
			$values = array_values($array);
			$sqlString = "";
			for($i=0;$i<count($columns);$i++){
				if($i==count($columns)-1){
					$sqlString .= $columns[$i]." = '".$values[$i]."' ";
				}else{
					$sqlString .= $columns[$i]." = '".$values[$i]."' and ";
				}
			}
			$sql = "SELECT * FROM ".$table." WHERE ".$sqlString;
		}
        $select = $this->connection->query($sql);
        if ($select) {
            $row = $select->fetchAll();
            return $row;
        } else {
            return false;
        }	
	}

	public function selectOrLimit($table, $array = null, $limit, $start = null) {
		if($start == null){
			$limitStr = "LIMIT ".$limit;
		}else{
			$limitStr = "LIMIT ".$start.", ".$limit;
		}
		if($array == null){
			$sql = "SELECT * FROM ".$table." ".$limitStr;
		}else{	
			$columns = array_keys($array);
			$values = array_values($array);
			$sqlString = "";
			for($i=0;$i<count($columns);$i++){
				if($i==count($columns)-1){
					$sqlString .= $columns[$i]." = '".$values[$i]."' ";
				}else{
					$sqlString .= $columns[$i]." = '".$values[$i]."' or ";
				}
			}
			$sql = "SELECT * FROM ".$table." WHERE ".$sqlString." ".$limitStr;
		}
        $select = $this->connection->query($sql);
        if ($select) {
            $row = $select->fetchAll();
            return $row;
        } else {
            return false;
        }
	}

	public function selectAndLimit($table, $array = null, $limit, $start = null) {
		if($start == null){
			$limitStr = "LIMIT ".$limit;
		}else{
			$limitStr = "LIMIT ".$start.", ".$limit;
		}
		if($array == null){
			$sql = "SELECT * FROM ".$table." ".$limitStr;
		}else{
			$columns = array_keys($array);
			$values = array_values($array);
			$sqlString = "";
			for($i=0;$i<count($columns);$i++){
				if($i==count($columns)-1){
					$sqlString .= $columns[$i]." = '".$values[$i]."' ";
				}else{
					$sqlString .= $columns[$i]." = '".$values[$i]."' and ";
				}
			}
			$sql = "SELECT * FROM ".$table." WHERE ".$sqlString." ".$limitStr;
		}
        $select = $this->connection->query($sql);
        if ($select) {
            $row = $select->fetchAll();
            return $row;
        } else {
            return false;
        }
	}

	public function insert($table, $array) {

		$columns = implode(", ", array_keys($array));
		$values  = implode("',' ", array_values($array));

		$sql = "INSERT INTO ".$table."(".$columns.") VALUES ('".$values."')";
		$insert = $this->connection->query($sql);
        if ($insert) {
            return $this->connection->lastInsertId($table);
        } else {
            return false;
        }
	}

	public function update($table, $id, $array) {

		$columns = array_keys($array);
		$values = array_values($array);
		$sqlString = "";
		for($i=0;$i<count($columns);$i++){
			if($i==count($columns)-1){
				$sqlString .= $columns[$i]." = '".$values[$i]."' ";
			}else{
				$sqlString .= $columns[$i]." = '".$values[$i]."', ";
			}
		}
		$sql = "UPDATE ".$table." SET ".$sqlString." WHERE id=" . $id;

		$update = $this->connection->query($sql);

        if ($update) {
            return true;
        } else {
            return false;
        }
	}

	public function delete($table, $id) {

		$sql = 'DELETE FROM ' . $table . ' WHERE id=' . $id;

        $delete = $this->connection->exec($sql);

        if ($delete) {
            return true;
        } else {
            return false;
        }
	}

	public function query($sql) {

		$query = $this->connection->query($sql);

        if ($query) {
            return $query;
        } else {
            return false;
        }
	}

	public function count($table, $array = null) {
		if($array == null){
			$sql = "SELECT count(*) from " . $table;
		}else{

			$columns = array_keys($array);
			$values = array_values($array);
			$sqlString = "";
			for($i=0;$i<count($columns);$i++){
				if($i==count($columns)-1){
					$sqlString .= $columns[$i]." = '".$values[$i]."' ";
				}else{
					$sqlString .= $columns[$i]." = '".$values[$i]."' and ";
				}
			}

			$sql = "SELECT count(*) from " . $table. " WHERE ". $sqlString;
		}
        $count = $this->connection->prepare($sql);
        $count->execute();
        return $count->fetchColumn();
	}

	function __destruct() {

        $this->connection = null;
    }
}
///////////////////////////////////////////////////////////////////////////////////////////////////
            $db = new Database; 
//Insert Sorgusu
            $userArray = array( 
            'username' => 'deneme', 
            'password' => md5('123456'), 
            'full_name' => 'Deneme DENEME', 
            'email' => 'deneme@deneme.com', 
            'auth' => 'user', 
            'lang' => 'tr' 
            ); 
            $table = "users"; 
            $db->insert($table, $userArray); 
//Update Sorgusu
            $userArray = array( 
            'username' => 'deneme1', 
            'password' => md5('1234'), 
            'lang' => 'en' 
            ); 
            $id=3; 
            $table = "users"; 
            $db->update($table,$id, $userArray); 
//Delete Sorgusu
            $id=3; 
            $table = "users"; 
            $db->delete($table,$id); 
//Count Sorgusu Tüm Tablo
            $table = "users"; 
            $db->count($table); 
//Count Sorgusu Sütun
            $sayılacak = array( 
            'lang' => 'tr', 
            'auth' => 'admin' 
            ); 
            $table = "users"; 
            $db->count($table,$sayılacak); 
//Select and Sorgusu
            $login = array( 
			'username' => 'username', 
			'password' => md5('password'); 
            $user = $db->selectAnd("users", $login); 
            print_r($user); 
//Select or Sorgusu
            $yetkili = array( 
			'username' => 'username', 
			'auth' => 'admin'); 
            $yetkili = $db->selectOr("users", $yetkili); 
            //eğer kayıt varsa herzaman iki boyutlu bir dizi döner yoksa boş döner 
            print_r($yetkili); 
//Select or Limit Sorgusu
            $yetkili = array( 
			'username' => 'username', 
			'auth' => 'admin'); 
            $yetkili = $db->selectOrLimit("users", $yetkili,5); 
            //eğer kayıt varsa herzaman iki boyutlu bir dizi döner yoksa boş döner ve limit kadar veri getirir 
            print_r($yetkili); 
//Limitte başlangıç değeri
            $yetkili = array( 
			'username' => 'username', 
			'auth' => 'admin'); 
            $başlangıc= 4; 
            $limit=7; 
            $yetkili = $db->selectOrLimit("users", $yetkili, $limit, $başlangıc); 
            //eğer kayıt varsa herzaman iki boyutlu bir dizi döner yoksa boş döner ve limit kadar veri getirir 
            print_r($yetkili); 
/*Eğer paremetre göndermek istemiyorsak şu şekilde işlem ysparız selectOrLimit("users", null, $limit, $başlangıc)*/
//Select and Limit Sorgusu
            $user= array( 
			'username' => 'username', 
			'password' => md5('password')); 
            $user = $db->selectAndLimit("users", $user,1); 
            print_r($yetkili); 
//Manuel Sorgu
            $sql = "SELECT (ad,soyad) FROM user ad='fatih' and soyad='göl'"; 
            $gelen = $db->query($sql); 
            $gelen = $gelen->fetchAll(); 
            print_r($gelen); 
?>

 

PDO ile Veritabanı Bağlantısı ve Listeleme

Sql kodlarımız

CREATE TABLE IF NOT EXISTS `users` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  PRIMARY KEY (`uye_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Tablo döküm verisi `users`
--
INSERT INTO `users` (`user_id`, `username`) VALUES (1, 'admin'),(2, 'test'),(3, 'user');

Php kodarımız

<?php 
///////////////////////BAGLANTI FONKSIYONUMUZ//////////////////////////
function pdo_mysql_baglan($HOST,$NAME,$USER,$PASS,$CHAR){
return $GLOBALS["baglan"]=array(0=>"mysql:host=$HOST;dbname=$NAME;charset=$CHAR",1=>"$USER",2=>"$PASS");
}
////////////////////////////////////////////////////////////////////////////////////

pdo_mysql_baglan("localhost","wordpress","root","123456","utf8");
$pdo = new pdo($baglan[0],$baglan[1],$baglan[2]);

$query = $pdo->query("SELECT * FROM users");
foreach( $query->fetchAll(PDO::FETCH_ASSOC) as $data){
	echo $data["username"];
	echo "<br>";
}

?>

Onaya Göre İsim Listelemek

Veritabanımızı oluşturalım

CREATE TABLE uretim
	(
     id int auto_increment primary key, 
     musteri varchar(255), 
     adet int(11),
     onay int(1)
    );

INSERT INTO uretim (id,musteri,adet,onay)
VALUES
(1, '1.Müşteri',5,0),
(2, '2.Müşteri',8,1),
(3, '3.Müşteri',2,2),
(4, '4.Müşteri',7,3);

baglan.php adlı dosyamızdan veritabanı bağlantımızı oluşturmuş varsayıp, kodlarımızı ekliyoruz.

<?php include "baglan.php"; 
?>
	<table border="1"  bordercolor="#111111" width="100%">
      <tr>
        <td width="25%" >
			<table border="1"  bordercolor="#111111" width="100%">
				<tbody>
					<th>Bekleyen</th>
				</tbody>
				<thead>
					<tr>
						<td>Müşteri Adı</td><td>Adet</td>
					</tr>
					<?php
					$veri=mysql_query("select * table uretim Where onay = 1");
					while($v=mysql_fetch_array($veri)){
						echo '<tr><td>'.$v["musteri"].'</td><td>'.$v["adet"].'</td>';
					}
					?>
					</tr>
				</thead>
			</table>
        </td>
        <td width="25%" >
			<table border="1"  bordercolor="#111111" width="100%">
				<tbody>
					<th>Kaplama</th>
				</tbody>
				<thead>
					<tr>
						<td>Müşteri Adı</td><td>Adet</td>
					</tr>
					<?php
					$veri=mysql_query("select * table uretim Where onay = 2");
					while($v=mysql_fetch_array($veri)){
						echo '<tr><td>'.$v["musteri"].'</td><td>'.$v["adet"].'</td>';
					}
					?>
					</tr>
				</thead>
			</table>
        </td>
        <td width="25%" >
			<table border="1"  bordercolor="#111111" width="100%">
				<tbody>
					<th>Taşlama</th>
				</tbody>
				<thead>
					<tr>
						<td>Müşteri Adı</td><td>Adet</td>
					</tr>
					<?php
					$veri=mysql_query("select * table uretim Where onay = 3");
					while($v=mysql_fetch_array($veri)){
						echo '<tr><td>'.$v["musteri"].'</td><td>'.$v["adet"].'</td>';
					}
					?>
					</tr>
				</thead>
			</table>
        </td>
        <td width="25%" >
			<table border="1"  bordercolor="#111111" width="100%">
				<tbody>
					<th>Sevkiyat</th>
				</tbody>
				<thead>
					<tr>
						<td>Müşteri Adı</td><td>Adet</td>
					</tr>
					<?php
					$veri=mysql_query("select * table uretim Where onay = 1");
					while($v=mysql_fetch_array($veri)){
						echo '<tr><td>'.$v["musteri"].'</td><td>'.$v["adet"].'</td>';
					}
					?>
					</tr>
				</thead>
			</table>
        </td>
      </tr>
    </table>

 

Sorgu Sonucunu Excel’e Aktarmak

<?PHP
error_reporting(4);
class ExportToExcel
{
	function exportWithPage($php_page,$excel_file_name)
	{
		$this->setHeader($excel_file_name);
		require_once "$php_page";
	}
	function setHeader($excel_file_name)
	{
		header("Content-type: application/octet-stream");
		header("Content-Disposition: attachment; filename=$excel_file_name");
		header("Pragma: no-cache");
		header("Expires: 0");
	}
	function exportWithQuery($qry,$excel_file_name,$conn)//to export with query
	{
		$tmprst=mysql_query($qry,$conn);
		$header="<center><table border=1px><th>Tablo Dökümü</th>";
		$num_field=mysql_num_fields($tmprst);
		while($row=mysql_fetch_array($tmprst,MYSQL_BOTH))
		{
			$body.="<tr>";
			for($i=0;$i<$num_field;$i++)
			{
				$body.="<td>".$row[$i]."</td>";
			}
			$body.="</tr>";	
		}
		$this->setHeader($excel_file_name);
		echo $header.$body."</table";
	}
}
$conn=mysql_connect('localhost','root','')or die('bağlanmadı');
mysql_select_db('test');


//ÖRNEK
$exp=new ExportToExcel();

//$exp->exportWithPage("export_file.php","test.xls");

$qry="select * from qa_users";
$exp->exportWithQuery($qry,"test.xls",$conn);

?>

 

Sorgu Sonrası Yönlendirme ile Güvenlik

Özellikle insert yaparken, flood engellemek için bunu kesinlikle uygulamalısınız.

Veritabanı bağlantınızı baglan.php dosyasında hazırlayın ve mysql_query sorgusunu düzenleyin.

<?php
include("baglan.php");
$sql_kontrol =mysql_query("select or update or insert or delete vs...");
mysql_error();

if (!empty($_SERVER['HTTP_REFERER'])){//yönlendirme
  header("Location: ".$_SERVER['HTTP_REFERER']);
}else{
  header("Location: 404.html?err=referer");
}
?>

 

İki Tablo Arasındaki Farkı Bulmak

Mantık gayet basit. Birbiriyle eşleşmeyen varsa dışarıda kalıyor.

Örneğin böyle bir tablomuz olduğunu düşünürsek

CREATE TABLE urun (`id` int);
INSERT INTO urun (`id`) 
VALUES	(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);

CREATE TABLE urundetay (`id` int, `uid` int);
INSERT INTO urundetay (`id`,`uid`) 
VALUES	(1, 1),	(2, 2),	(3, 3),	(4, 4),	(5, 5),	(6, 7);

Yöntem 1

SELECT u.id FROM urun as u 
WHERE NOT EXISTS (SELECT * FROM urundetay as d WHERE d.uid = u.id )

Yöntem 2

SELECT u.id FROM urun as u 
LEFT OUTER JOIN urundetay as d ON u.id = d.uid
where d.uid IS NULL

Çıktısı

+-----+
| id  |
+-----+
|  6  |
|  8  |
|  9  |
|  10 |
+-----+

 

Çift Kayıtları Bulmak

Yapmış olduğum bir örneği paylaşmak istiyorum.

Flood engellememiş iseniz, bu şekilde çift kayıtları silme veya düzenleme imkanınız olabilir.

select f.* from firma as f,
	( select link,count(1) as linkSayisi 
		from firma 
		group by link 
		having count(1)>1
	) as f2 
where f.link=f2.link 
ORDER BY `f`.`link` ASC

veya

SELECT dil,link, COUNT(link) AS adet 
FROM firma 
GROUP BY link,dil 
HAVING ( COUNT(link) > 1 ) 
ORDER BY adet desc