Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Классы и MySQL 
V
    Опции темы
gta4kv
Дата 5.5.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



Всем привет...


Есть у меня есть такой класс :

Код

        class mysql {        
    function query ($query) {
        $error = false;
        if($query == ""){
            // some errors
            $error = true;
        }
        
        if($error == false){
        $query = mysql_real_escape_string($query);
        return (mysql_query($query) or die(mysql_error()));    
        }
    
    }
    

        function result ($query) {
        $error = false;
        
        if($query == "") {
            $error=true;
        }
        
        if($error == false ) {
            return (mysql_fetch_object($query));
        }
    }
   }


Я например делаю query :
Код

$test = $mysql->query("SELECT * FROM `test`");


Но заюзать result на такую переменную не получаеца :

Код

$mysql->result($test);


Он не "распознает" это как mysql_query

Как быть?  smile 

Это сообщение отредактировал(а) gta4kv - 5.5.2007, 15:21
PM MAIL   Вверх
vasac
Дата 5.5.2007, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 3
Всего: 36



Цитата

 $query = mysql_real_escape_string($query);

что это? зачем? куда? для чего?

Цитата(gta4kv @  5.5.2007,  15:20 Найти цитируемый пост)
Как быть?

Выкинуть этот бессмысленный класс и пользоваться напрямую функциями mysql_* либо написать что-то более вразумительное.
PM WWW   Вверх
gta4kv
Дата 5.5.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



Цитата(vasac @ 5.5.2007,  15:25)
что это? зачем? куда? для чего?


Мм. ну это уберём..

Цитата

Выкинуть этот бессмысленный класс и пользоваться напрямую функциями mysql_* либо написать что-то более вразумительное.


Нет. Так не пройдёт.  smile

Добавлено через 26 секунд
Вообщем хотелось услышать совет а не поучения...  smile 
PM MAIL   Вверх
check
Дата 5.5.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 1
Всего: 23



Код

    function query ($query) {
        $error = false;
        if($query == ""){
            // some errors
            $error = true;
        }
        
        if(!$error){ 
        $query = mysql_real_escape_string($query);
        $result = mysql_query($query) or die(mysql_error());
        return $result;    
        }
    
    }


Добавлено через 1 минуту и 47 секунд
Код

return (mysql_query($query) or die(mysql_error())); 

Тут у тебя возвращается не resulset, а результат логического выражения, по-моему.

Добавлено через 5 минут и 19 секунд
То есть вот что у тебя было
Код

return ($result or die(mysql_error()));  


Добавлено через 9 минут и 42 секунды
mysql_real_escape_string как раз выкидывать не в коем случае не надо,  а вот в самом классе смысла действительно не наблюдается.
PM MAIL   Вверх
gta4kv
Дата 5.5.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



В чём фигня, мне сразу не нужно получать результат..
Да и то что прям в классе это присваеваетсо переменной - тоже не пойдёт.
PM MAIL   Вверх
check
Дата 5.5.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 1
Всего: 23



А что же ты собираешься передавать в mysql_fetch_object?
 
PM MAIL   Вверх
gta4kv
Дата 5.5.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



Код

$test = $mysql->query("SELECT * FROM `test`");
$mysql->result($test);


Мне надо реализовать что бы мона было так юзать... 
PM MAIL   Вверх
check
Дата 5.5.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 1
Всего: 23



Я только что это именно так и заюзал,  только перед этими двумя строчками добавил ещё две
Код

mysql_connect($server,$user,$passwd);
mysql_select_db($db);

PM MAIL   Вверх
gta4kv
Дата 5.5.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



Во первых, ты мне соединил в одну функцию.. что абсолютно не надо..

Во вторых :

Код

 $query = mysql_real_escape_string($query);
  $result = mysql_query($query) or die(mysql_error());


Мне не надо что бы это переменным присваиволось. 
PM MAIL   Вверх
Glip
Дата 5.5.2007, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 1
Всего: 18



а ничего что оно будет обрабатывать $mysql->query(false) как запрос?
ну и result(false) тоже

Это сообщение отредактировал(а) Glip - 5.5.2007, 18:34


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 5.5.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



в этом и фигня.. надо сделать что бы норм было))
PM MAIL   Вверх
check
Дата 5.5.2007, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 1
Всего: 23



Цитата(gta4kv @  5.5.2007,  16:45 Найти цитируемый пост)
Мне не надо что бы это переменным присваиволось.  


Ну если тебе эта переменная так мешает жить
Код

return !mysql_errno() ? mysql_query($query) : exit();  


Только вот так 
Код

$result = mysql_query($query) or die(mysql_error());
return $result;  

У тебя бы по крайней мере выводилось сообщение об ошибке, если она есть.

А чтобы ты не говорил что я что-то там объединил в одну функцию -
всё художество целиком:
Код

class mysql {        
    function query ($query) {
        $error = false;
        if($query == ""){
            // some errors
            $error = true;
        }
       
        if(!$error){ 
        $query = mysql_real_escape_string($query);
        return !mysql_errno() ? mysql_query($query) : exit();   
      
        }
    
    }
    
        function result ($query) {
        $error = false;
        
        if($query == "") {
            $error=true;
        }
        
        if($error == false ) {
            return mysql_fetch_object($query);
        }
    }
   }

mysql_connect("localhost", "root", "");
mysql_select_db("gb");
$mysql = new mysql();
$test = $mysql->query("SELECT * FROM`users`"); 
while ($row = $mysql->result($test)) {
   echo $row->mail;
}








Это сообщение отредактировал(а) check - 5.5.2007, 19:15
PM MAIL   Вверх
Glip
Дата 5.5.2007, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 1
Всего: 18



мне кажется что данную конкретную конструкцию:
Код

        $error = false;
        
        if($query == "") {
            $error=true;
        }
        
        if($error == false ) {


можно смело менять на:
Код

    if ($query) {



--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 6.5.2007, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91





Код

$test = $mysql->query(" SELECT * FROM `users` ");

$test2 = $mysql->result($test);

var_dump($test2); // = bool(false)


но самое странное что : 

Код

$test = mysql_query(" SELECT * FROM `users` ");

$test2 = mysql_fetch_object($test);

var_dump($test2); // = ТОЖЕ bool(false)



Причем запрос правильный.... 100%
PM MAIL   Вверх
Glip
Дата 6.5.2007, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 1
Всего: 18



а 
Код

var_dump(mysql_fetch_ assoc($test));

что даёт?
и что при этом в $test ? (тоже var_dump)

Это сообщение отредактировал(а) Glip - 6.5.2007, 10:02


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 6.5.2007, 10:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



Цитата(Glip @ 6.5.2007,  10:02)
а 
Код

var_dump(mysql_fetch_ assoc($test));

что даёт?
и что при этом в $test ? (тоже var_dump)

Код

$test  = mysql_query('SELECT * FROM users'); 
var_dump($test); // resource(7) of type (mysql result) 
var_dump(mysql_fetch_assoc($test)); // bool(false)


Добавлено через 58 секунд
Упс.. Похоже лоханулся smile У меня таблица пустая.

Добавлено через 4 минуты и 16 секунд
Все пашет...  smile  smile 
PM MAIL   Вверх
Glip
Дата 6.5.2007, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 1
Всего: 18



бывает smile


--------------------
user posted image
PM MAIL   Вверх
-=Ustas=-
Дата 7.5.2007, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 17
Всего: 69



gta4kv, вот эту ерунду убери, ОК?!
Код

$query = mysql_real_escape_string($query);



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
gta4kv
Дата 7.5.2007, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



Цитата(-=Ustas=- @ 7.5.2007,  18:15)
gta4kv, вот эту ерунду убери, ОК?!
Код

$query = mysql_real_escape_string($query);

Ты как всегда пришел умничать. smile)))))
PM MAIL   Вверх
check
Дата 7.5.2007, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 1
Всего: 23



Код

$query = mysql_real_escape_string($query);

Да,  я что-то не обратил на это внимание.

Но ведь таким образом mysql_real_escape_string всё равно будет делать своё дело,  разве нет?
PM MAIL   Вверх
vasac
Дата 8.5.2007, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 3
Всего: 36



нет
PM WWW   Вверх
-=Ustas=-
Дата 8.5.2007, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 17
Всего: 69



Цитата(gta4kv @  7.5.2007,  20:56 Найти цитируемый пост)
Ты как всегда пришел умничать.

И в мыслях не было. Ты лучше попробуй это выполнить, например с текстовым полем в условии ;)
Код

$test = $mysql->query("SELECT * FROM `test` WHERE name = 'name_string' ");



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
wolfmessing
Дата 20.7.2007, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 24.4.2007

Репутация: нет
Всего: 1



Код

include "config.php";
// Class
class database 
      {
      var $connection;
      var $query_id = 0;
      var $query_count = 0;
      //var $error;

      function db($db_host, $db_user, $db_pass, $db_name) 
            {                  
            if (!$this->connection = mysql_connect($db_host, $db_user, $db_pass)) 
                  {
                  echo"Чото не соединяет ";
                  }
            if ($db_name != "") 
                  {
                  if (!@mysql_select_db($db_name)) 
                        {
                        @mysql_close($this->connection);
                        echo"Не возможно выбрать БД: $db_name";
                        }
                  }
            return $this->connection;
            }

      function close() 
            {
            if ($this->connection) 
                  {
                  if ($this->query_id) 
                        {
                        @mysql_free_result($this->query_id);
                        }
                  return @mysql_close($this->connection);
                  }else{
                  return false;
                  }
            }

      function query($query = "") 
            {
            unset($this->query_id);
            if ($query != "") 
                  {
                  if (!$this->query_id = @mysql_query($query, $this->connection)) 
                        {
                        echo"Не верный запрос: $query";
                        }          
                  $this->query_count++;
                  return $this->query_id;
                  }
            }

      function fetch_array($query_id = -1, $assoc = 0) 
            {
            if ($query_id != -1) 
                  {
                  $this->query_id = $query_id;
                  }
            if ($this->query_id)
                  {
                  return ($assoc) ? mysql_fetch_assoc($this->query_id) : mysql_fetch_array($this->query_id);
                  }
            }

      function free_result($query_id = -1) 
            {
            if ($query_id != -1) 
                  {
                  $this->query_id = $query_id;
                  }
            return @mysql_free_result($this->query_id);
            }

      function get_numrows($query_id = -1) 
            {
            if ($query_id != -1) 
                  {
                  $this->query_id = $query_id;
                  }
            return mysql_num_rows($this->query_id);
            }
      
      }// _Class
      
$sql = new database();
$sql->db($db_host, $db_name, $db_user, $db_pass);

if($sql->connection)
      {
      echo "OK</br>";
      }else{
      echo "NON</br>";
      }
      
$query = $sql->query("SELECT * FROM `db`");
while($res = $sql->fetch_array($query))
      {
      echo $res['id'];
      echo $res['name'];
      echo "</br>";
      }
      
$query = $sql->query("SELECT * FROM `db` WHERE `name`='$name'"); 

$res = $sql->get_numrows($query);
if (!$res)
      {
      echo "</br>OBLOM";
      }else{
      $res = $sql->fetch_array($query);
      echo "</br>";
      echo $res['name'];
      }
?>


У меня в общей сложности получился вот такой класс (чесно признаюсь, собрал по примерам function query и function fetch_array, остальное моё).
Всё работает прекрасно, пара запросов после класса.   smile 

Это сообщение отредактировал(а) wolfmessing - 23.7.2007, 07:52
PM MAIL WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0744 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.