у меня сейчас стоит mysqli_query если я поставлю mysql_query то будет ошибка что не подключен к базе данных,а как сделать,чтоб они оба работали одинакова ? и есть ли различие между ними? что лучше? Код (Text): <?PHP class db{ private $con = false; // Идентификатор private $Queryes = 0; // Число запросов private $MySQLErrors = array(); // Массив с ошибками private $TimeQuery = 0; // Всемя запросов private $MaxExTime = 0; // Максимальное время за 1 запрос private $ListQueryes = ""; // Список запросов private $HardQuery = ""; // Самый тяжелый запрос private $LastQuery = false; // Ресурс запрос private $ConnectData = array(); // Данные соединения /*======================================================================*\ Function: __construct Descriiption: Выполняется при создании экземпляра класса \*======================================================================*/ public function __construct($host, $user, $pass, $base){ $this->Connect($host, $user, $pass, $base); $this->query("SET NAMES 'cp1251'"); $this->query("SET CHARACTER SET 'cp1251'"); } /*======================================================================*\ Function: Stats Descriiption: Возвращает статистику по запросам \*======================================================================*/ public function Stats(){ $sD = array(); $sD["TimeQuery"] = $this->TimeQuery; $sD["MaxExTime"] = $this->MaxExTime; $sD["ListQueryes"] = $this->ListQueryes; $sD["HardQuery"] = $this->HardQuery; $sD["Queryes"] = $this->Queryes; $sD["mysql_result"] = $this->mysql_result; return $sD; } /*======================================================================*\ Function: GetError Descriiption: Выводит описание ошибки в поток \*======================================================================*/ private function GetError($TextError){ $this->MySQLErrors[] = $TextError; die($TextError); } /*======================================================================*\ Function: query Descriiption: Запрос \*======================================================================*/ public function query($query, $FreeMemory = false, $write_last = true){ $TimeA = $this->get_time(); $xxt_res = mysqli_query($this->con, $query) or $this->GetError(mysqli_error($this->con)); if($write_last) $this->LastQuery = $xxt_res; $TimeB = $this->get_time() - $TimeA; $this->TimeQuery += $TimeB; if($TimeB > $this->MaxExTime){$this->HardQuery = $query; $this->MaxExTime = $TimeB;} if( empty($this->ListQueryes) ) $this->ListQueryes = $query; else $this->ListQueryes .= "\n".$query; $this->Queryes++; if(!$FreeMemory){ return $this->LastQuery; }else return $this->FreeMemory(); } /*======================================================================*\ Function: Connect Descriiption: Соединяется с ДБ \*======================================================================*/ private function Connect($host, $user, $pass, $base){ $this->con = @mysqli_connect($host, $user, $pass, $base) or $this->GetError(mysqli_connect_error()); } /*======================================================================*\ Function: MultiQuery Descriiption: Множественный запрос \*======================================================================*/ function MultiQuery($query){ $TimeA = $this->get_time(); mysqli_multi_query($this->con, $query) or $this->GetError(mysqli_connect_error()); $TimeB = $this->get_time() - $TimeA; $ret_data = array(); $counter = 0; do{ if ($result = mysqli_store_result($this->con)) { while ($row = mysqli_fetch_array($result)) { $ret_data[$counter][] = $row; } mysqli_free_result($result); $counter++; } }while(mysqli_next_result($this->con)); $this->TimeQuery += $TimeB; if($TimeB > $this->MaxExTime){$this->HardQuery = $query; $this->MaxExTime = $TimeB;} if( empty($this->ListQueryes) ) $this->ListQueryes = $query; else $this->ListQueryes .= "\n".$query; $this->Queryes++; return $ret_data; } /*======================================================================*\ Function: get_time Descriiption: Возвращает строку времени \*======================================================================*/ private function get_time() { list($seconds, $microSeconds) = explode(' ', microtime()); return ((float) $seconds + (float) $microSeconds); } /*======================================================================*\ Function: __destruct Descriiption: Выполняется при уничтожении экземпляра класса \*======================================================================*/ function __destruct(){ if( !count($this->MySQLErrors) ) mysqli_close($this->con); } /*======================================================================*\ Function: FreeMemory Descriiption: Освобождает память \*======================================================================*/ function FreeMemory() { $tr = ($this->LastQuery) ? true : false; @mysqli_free_result($this->LastQuery); return $tr; } /*======================================================================*\ Function: RealEscape Descriiption: Фильтрация ) \*======================================================================*/ function RealEscape($string) { if ($this->con) return mysqli_real_escape_string ($this->con, $string); else return mysql_escape_string($string); } /*======================================================================*\ Function: NumRows Descriiption: Подсчет числа строк \*======================================================================*/ function NumRows() { return mysqli_num_rows($this->LastQuery); } /*======================================================================*\ Function: fetch_array Descriiption: Возвращ массив, создает циферные ключи... \*======================================================================*/ function FetchArray(){ //if($this->LastQuery) return mysqli_fetch_array($this->LastQuery); } /*======================================================================*\ Function: NumRows Descriiption: Возвращает результат \*======================================================================*/ function FetchRow(){ $xres = mysqli_fetch_row($this->LastQuery); return (count($xres) > 1) ? $xres : $xres[0]; } /*======================================================================*\ Function: LastInsert() Descriiption: Возвращает последний ID вставки \*======================================================================*/ function LastInsert(){ return @mysqli_insert_id($this->con); } } ?>
порядок вопросов не верен. вы бы должны были сначала проштудировать информацию о mysqli и mysql, выбрали что вам нужно, а уже потом, возможно, задали бы вопрос, а как сделать чтобы.
я уже как 3 дня выбрал что мне надо,но нашел скрипт и там везде mysql_query написано,а у меня стоит mysqli_qury , и пишет мол не подключен к базе данных,может подскажешь как сделать? я попробовал так Код (Text): $this->con = @mysql_connect($host, $user, $pass, $base) or $this->GetError(mysql_connect_error()); mysql_query($this->con, $query) or $this->GetError(mysql_connect_error()); но у меня не получилось,вот думаю что не так)?
а в чем глубокий смысл попытки использования расширения которое будет выпилено в ближайших релизах? заранее готовишься ныть на форумах что вдруг перестало работать?
да причем тут плакать? я просто интересуюсь,а потом уже можно будет что нибудь свое сделать,если пойму всю схему)
ты вопроса не понял. я понимаю жопу рвать и делать "мультиэкстеншн" под pdo и mysqli но чтоб жопу рвать и делать под mysql и mysqli это ты не туда разбрасываешь своё время
Во-первых, Ganzal конечно прав - надо использовать mysqli. А во-вторых - ну почему никто не заглядывает в мануалы по функциям на https://php.net? Там же ясно написано, что функции расширения mysql принимают идентификатор соединения вторым, а не первым параметром.
без подготовки та документация для них как китайские иероглифы, как обычно новички начинают сразу со сложного, вот и все проблемы у них от этого