ООП - Вопросы.

Статус
В этой теме нельзя размещать новые ответы.

sesharim

Знаток
Регистрация
3 Окт 2006
Сообщения
299
Реакции
29
Вроде всё нормально, но ошибку свою так найти и не могу, подскажите. Кстати, именно по ООП можно всем сюда вопросы скидывать. И сами будем пробывать на них отвечать.

PHP:
<?php
/**
 * Enter description here...
 *
 */
class dataBase {
    /**
     * Enter description here...
     *
     * @var unknown_type
     */
    private $hostname;
    private $username;
    private $password;
    private $database;
    private $link;
    /**
     * Enter description here...
     *
     * @var unknown_type
     */
    protected $mainCharacter = "cp1251";
    protected $selectDb;
    protected $errorNo;
    protected $errorMsg;
    protected $queryId;
    /**
     * Enter description here...
     *
     * @param unknown_type $hostname
     * @param unknown_type $username
     * @param unknown_type $password
     * @param unknown_type $database
     */
    function __construct($hostname, $username, $password, $database, $mainCharacter) {
        $this->hostname      = $hostname;
        $this->username      = $username;
        $this->password      = $password;
        $this->database      = $database;
        $this->mainCharacter = $mainCharacter;
        $this->connect();
        $this->select();
        
        $this->query("set session character_set_server=".$this->mainCharacter.";");
        $this->query("set session character_set_database=".$this->mainCharacter.";");
        $this->query("set session character_set_connection=".$this->mainCharacter.";");
        $this->query("set session character_set_results=".$this->mainCharacter.";");
        $this->query("set session character_set_client=".$this->mainCharacter.";"); 
    }
    /**
     * Enter description here...
     *
     * @return unknown
     */
    function connect() {
        $this->link = mysql_connect($this->hostname, $this->username, $this->password);
        if (!$this->link) {
            return $this->error("Ошибка подключения");
        }
    }
    /**
     * Enter description here...
     *
     * @return unknown
     */
    function select() {
        $this->selectDb = mysql_select_db($this->database);
        if (!$this->selectDb) {
            return $this->error("Ошибка выбора базы данных");
        }
    }
    /**
     * Enter description here...
     *
     * @param unknown_type $query
     * @return unknown
     */
    function query($query) {
        $this->queryId = mysql_query($query);
        if (!$this->queryId) {
            return $this->error("Ошибка в запросе");
        }
    }
    /**
     * Enter description here...
     *
     * @param unknown_type $result
     * @return unknown
     */
    function rows($result) {
        return mysql_num_rows($result);
    }
    /**
     * Enter description here...
     *
     * @param unknown_type $result
     * @return unknown
     */
    function mArray($result) {
        return mysql_fetch_array($result);
    }
    /**
     * Enter description here...
     *
     * @param unknown_type $msg
     */
    function error($msg) {
        $this->errorNo = mysql_errno();
        $this->errorMsg = mysql_error();
            $messange = "<b>".$msg."</b>: <b><font color=\"red\">".$this->errorMsg."</font> <font color=\"green\">(".$this->errorNo.")</font></b>";
            die($messange);
    }
}

?>
 
Ошибку то напиши?
PS класс ты описал. Ты его где-нить используешь?
 
М-да. Нашел я свою ошибку. Забыл заинклудить класс в нужное место. :) Сам класс рабочий, кстати, если есть комментарии по классу, или я веду не правильный подход - подскажите пожайлуста.

//всё равно ошибочка есть, но я вроде везде эти кавычки выставил: Ошибка в запросе: 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 '' at line 1 (1064)
 
Исправил ошибку, но теперь ничего не выводит.
Даже пустота типа:
$q = $db->query("SELECT * FROM `cms_users` ORDER BY `user_id`;");
echo $q;
 
ТС, зачем выдумывать велосипед, если есть PDO?

Исправил ошибку, но теперь ничего не выводит.
Даже пустота типа:
$q = $db->query("SELECT * FROM `cms_users` ORDER BY `user_id`;");
echo $q;
И что ты хочешь здесь увидеть, если метод query у тебя ни чего не возвращает кроме ошибки?
 
Ну хоть ради приличия должно вывести типа: Resource #2, :) или что-то в этом роде, но не rows, не mArray не работают, как я понял. Ибо пустота,
пытаюсь вывести echo count($this->rows($q)); и выводит только "1", хотя записей 4. Подскажите пожайлуста.
P.S: насчет велосипеда - своё доступнее, тренировка знаний. :)

Добавлено через 6 минут
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
 
Чтобы что-то вывело метод query должен хотя бы что-то вернуть :)
Добавь в function query в самом конце:
Код:
return $this->queryId;
 
Ну хоть ради приличия должно вывести типа: Resource #2
C какого перепуга или интерпретатор должен угадывать желания?
Что метод тебе выведет, если он возвращает результат только в случае ошибки?
 
Ох, ребят. Спасибо большое за замечания. Тоесть каждый метод должен возвращать либо ошибку, либо нужное мне действие? Есть ли ещё замечания по коду выше? И ещё раз спасибо.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху