From f84915fbde3aeaad125bb48821bbb5f70a68224b Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Fri, 22 Mar 2013 20:15:39 +0000
Subject: [PATCH] Poprawka błędnego zapytania przy wyszukiwaniu książek z MATCH ... AGAINST ...

---
 includes/db2.php |  113 +++++++++++++++++++++-----------------------------------
 1 files changed, 42 insertions(+), 71 deletions(-)

diff --git a/includes/db2.php b/includes/db2.php
index 600e8fe..890879d 100644
--- a/includes/db2.php
+++ b/includes/db2.php
@@ -1,86 +1,57 @@
 <?php
-if(!extension_loaded('mysql')) {
-	error::add('Brak rozszerzenia MySQL. Skrypt nie będzie działał.');
-}
-
 class sql {
 	static $db;
 	static $queries = 0;
 	
+	static $PDO;
+	
 	static function connect() {
-		self::$db = @mysql_connect(config::$db_host, config::$db_user, config::$db_pass);
-		if(!self::$db) {
-			error::add(mysql_error());
-		}
-		
-		self::query('SET CHARACTER SET \'UTF8\'');
-		self::query('SET NAMES \'UTF8\'');
-		
-		self::$queries = 0;
-		
-		if(!@mysql_select_db(config::$db_base)) {
-			error::add(mysql_error());
-		}
 	}
 	
 	static function query($q) {
-		if(!self::$db) {
-			self::connect();
+		if(!self::$PDO) {
+			self::$PDO = PDOO::Singleton();
 		}
-		
-		if(!@mysql_ping(self::$db)) {
-			self::connect();
-		}
-		
-		$r = @mysql_query($q, self::$db);
 		
 		self::$queries++;
 		
-		if($r===FALSE) {
-			error::add(mysql_error().' '.$q);
-		}
-		
-		return $r;
+		return self::$PDO->query($q);
 	}
 	
 	static function fetchonea($q) {
-		return mysql_fetch_assoc($q);
+		return $q->fetch(PDO::FETCH_ASSOC);
 	}
 	
 	static function fetchone($q) {
-		return mysql_fetch_array($q);
+		return $q->fetch(PDO::FETCH_ASSOC);
 	}
 	
 	static function fetch($q) {
-		while ($entry = mysql_fetch_array($q)) {
-			$r[] = $entry;
-		}
-		
-		if(!$r) {
-			$r = array();
-		}
-		
-		return $r;
+		return $q->fetchAll();
 	}
 	
 	static function increment_id() {
-		return mysql_insert_id(self::$db);
+		if(!self::$PDO) {
+			self::$PDO = PDOO::Singleton();
+		}
+		
+		return self::$PDO->lastInsertId();
 	}
 	
-	static function affected() {
-		return mysql_affected_rows(self::$db);
+	static function affected($q = NULL) {
+		if($q === NULL) {
+			return 'nieznana';
+		}
+		
+		return $q->rowCount();
 	}
 	
 	static function escape($q) {
-		if(!self::$db) {
-			self::connect();
+		if(!self::$PDO) {
+			self::$PDO = PDOO::Singleton();
 		}
 		
-		if(!@mysql_ping(self::$db)) {
-			self::connect();
-		}
-		
-		return mysql_real_escape_string($q, self::$db);
+		return self::$PDO->quote($q);
 	}
 	
 	static function close() {
@@ -127,8 +98,8 @@
 				continue;
 			}
 			
-			$a[] = '`'.sql::escape($key).'`';
-			$b[] = '\''.sql::escape($value).'\'';
+			$a[] = '`'.$key.'`';
+			$b[] = sql::escape($value);
 		}
 		
 		return '('.implode(', ', $a).') VALUES ('.implode(', ', $b).')';
@@ -144,11 +115,11 @@
 				$value = NULL;
 			}
 			if(is_null($value)) {
-				$a[] = '`'.sql::escape($key).'`=NULL';
+				$a[] = '`'.$key.'`=NULL';
 			}
 			else
 			{
-				$a[] = '`'.sql::escape($key).'`=\''.sql::escape($value).'\'';
+				$a[] = '`'.$key.'`='.sql::escape($value);
 			}
 		}
 		
@@ -195,7 +166,7 @@
 				}
 				else
 				{
-					$a[] = self::__combine_keyn($key).'=\''.sql::escape($value).'\'';
+					$a[] = self::__combine_keyn($key).'='.sql::escape($value);
 				}
 			}
 		}
@@ -218,13 +189,13 @@
 						$a[] = self::__combine_keyn($key).' IS NULL';
 					}
 					elseif(substr($key, -1)=='!') {
-						$a[] = self::__combine_keyn(substr($key, 0, -1)).'!=\''.sql::escape($value).'\'';
+						$a[] = self::__combine_keyn(substr($key, 0, -1)).'!='.sql::escape($value);
 					}
 					elseif($key=='^') {
 						$a[] = 'MAX('.self::__combine_keyn($value).')';
 					}
 					elseif(substr($key, -2)=='~~') {
-						$temp = 'MATCH ('.self::__combine_keyn(substr($key, 0, -2)).') AGAINST (\''.sql::escape($value).'\')';
+						$temp = 'MATCH ('.self::__combine_keyn(substr($key, 0, -2)).') AGAINST ('.sql::escape($value).')';
 						if($revelance) {
 							self::$revelance = $temp.' AS `revelance`';
 						}
@@ -232,23 +203,23 @@
 						$a[] = $temp;
 					}
 					elseif(substr($key, -1)=='~') {
-						$a[] = self::__combine_keyn(substr($key, 0, -1)).' LIKE \''.sql::escape($value).'\'';
+						$a[] = self::__combine_keyn(substr($key, 0, -1)).' LIKE '.sql::escape($value);
 					}
 					elseif(substr($key, -2)=='>=') {
-						$a[] = self::__combine_keyn(substr($key, 0, -2)).'>=\''.sql::escape($value).'\'';
+						$a[] = self::__combine_keyn(substr($key, 0, -2)).'>='.sql::escape($value);
 					}
 					elseif(substr($key, -2)=='<=') {
-						$a[] = self::__combine_keyn(substr($key, 0, -2)).'<=\''.sql::escape($value).'\'';
+						$a[] = self::__combine_keyn(substr($key, 0, -2)).'<='.sql::escape($value);
 					}
 					elseif(substr($key, -1)=='>') {
-						$a[] = self::__combine_keyn(substr($key, 0, -1)).'>\''.sql::escape($value).'\'';
+						$a[] = self::__combine_keyn(substr($key, 0, -1)).'>'.sql::escape($value);
 					}
 					elseif(substr($key, -1)=='<') {
-						$a[] = self::__combine_keyn(substr($key, 0, -1)).'<\''.sql::escape($value).'\'';
+						$a[] = self::__combine_keyn(substr($key, 0, -1)).'<'.sql::escape($value);
 					}
 					else
 					{
-						$a[] = self::__combine_keyn($key).'=\''.sql::escape($value).'\'';
+						$a[] = self::__combine_keyn($key).'='.sql::escape($value);
 					}
 				}
 			}
@@ -306,21 +277,21 @@
 			$as = $value;
 			$value = $key;
 		}
-		return '`'.sql::escape($value).'`'.($as ? ' AS `'.sql::escape($as).'`' : '');
+		return '`'.$value.'`'.($as ? ' AS `'.$as.'`' : '');
 	}
 	
 	static function __combine_keyn($key) {
 		if(!self::$SAFE_MODE_KEY AND strpos($key, '.')!==FALSE) {
 			$key = explode('.', $key, 2);
-			return '`'.sql::escape($key[0]).'`.`'.sql::escape($key[1]).'`';
+			return '`'.$key[0].'`.`'.$key[1].'`';
 		}
 		
-		return '`'.sql::escape($key).'`';
+		return '`'.$key.'`';
 	}
 	
 	static function __combine_table($table) {
 		if(!is_array($table) OR self::$SAFE_MODE_TABLE) {
-			return '`'.sql::escape($table).'` ';
+			return '`'.$table.'` ';
 		}
 		else
 		{
@@ -419,17 +390,17 @@
 	}
 	
 	static function add($table, $keys) {
-		sql::query('INSERT INTO `'.sql::escape($table).'` '.self::__combine_insert($keys));
+		sql::query('INSERT INTO `'.$table.'` '.self::__combine_insert($keys));
 		return sql::affected();
 	}
 	
 	static function edit($table, $keys, $where=NULL, $order=NULL, $limit=NULL, $stop=NULL) {
-		sql::query('UPDATE `'.sql::escape($table).'` SET '.self::__combine_update($keys).self::__combine_where($where).self::__combine_order($order).self::__combine_limit($limit, $stop));
+		sql::query('UPDATE `'.$table.'` SET '.self::__combine_update($keys).self::__combine_where($where).self::__combine_order($order).self::__combine_limit($limit, $stop));
 		return sql::affected();
 	}
 	
 	static function del($table, $where=NULL, $order=NULL, $limit=NULL, $stop=NULL) {
-		sql::query('DELETE FROM `'.sql::escape($table).'`'.self::__combine_where($where).self::__combine_order($order).self::__combine_limit($limit, $stop));
+		sql::query('DELETE FROM `'.$table.'`'.self::__combine_where($where).self::__combine_order($order).self::__combine_limit($limit, $stop));
 		return sql::affected();
 	}
 	

--
Gitblit v1.9.1