Как прописать коннект с базой данных

Тема в разделе "Как сделать...", создана пользователем dmx, 28 сен 2012.

  1. dmx

    dmx

    Регистр.:
    22 июн 2011
    Сообщения:
    662
    Симпатии:
    527
    PHP:
    public function __construct(){
            
    $this->connect();
        }
       
        public function 
    connect(){ global $site;
            if(empty(
    $this->connect)){
                
    $this->sql4user = (empty($site["secretkey4sqlu"])? $site["techname"]: $site["techname"]."_".$site["secretkey4sqlu"]);
                
    $this->connect = @mysql_connect((empty($site["secretkey4sqlu"])? "localhost"$site["techname"].".mysql"), $this->sql4user, (empty($site["secretkey4sqlp"])? $site["techname"]: $site["secretkey4sqlp"])) or $this->err();
                if(
    $this->iscon()){
                    
    mysql_set_charset("cp1251");
                    
    mysql_select_db($this->sql4user);
                    return 
    true;
                }else return 
    false;
            }else return 
    true;
        }
    :pop:
    Мой то как вписать , не понятная структура.
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.405
    Симпатии:
    1.185
    Для понимания почитай http://php.net/manual/ru/function.mysql-connect.php и про тернарный оператор.

    Для решение задачи можно жестко прописать параметры подключения:
    PHP:
    $this->connect = @mysql_connect("localhost"'sql_user_name''sql_user_password') or $this->err();
    ...
    mysql_select_db('sql_table');
     
    Extalionez и dmx нравится это.
  3. dmx

    dmx

    Регистр.:
    22 июн 2011
    Сообщения:
    662
    Симпатии:
    527
    Latteo , a можешь в мой код вписать данные для коннекта , без ...............
    как ни пытаюсь - не работает. хоть окстись.
     
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.405
    Симпатии:
    1.185
    Может еще где-то затаилась ошибка...

    Смотри логи мускуля на предмет того есть ли коннект.
    Смотри какую ошибку класс возвращает. Судя по $this->err() должна быть переменная с ошибкой.
     
    dmx нравится это.
  5. NDK13

    NDK13 Создатель

    Регистр.:
    31 авг 2012
    Сообщения:
    36
    Симпатии:
    14
    А что тут непонятного? Данный код не работает? Значит надо смотреть значения, что то типа
    Код:
    $result = new ИмяКлассаИзПримера();
    var_dump($result);
    И смотреть правильные они или нет. Если надо прописать другие значения для соединения, то можно сделать что то типа
    Код:
    $site["secretkey4sqlu"]="sql_user";
    $site["secretkey4sqlp"]="sql_password";
    $result = new ИмяКлассаИзПримера();
    
    единственная проблема в том что в этом вызове подразумевается что имя базы совпадает с именем пользователя
     
    dmx нравится это.
  6. dmx

    dmx

    Регистр.:
    22 июн 2011
    Сообщения:
    662
    Симпатии:
    527
    Вот весь кусок функции, как только не пробовал..
    PHP:
    /* sql */
    class sql{
       
        public function 
    __construct(){
            
    $this->connect();
        }
       
        public function 
    connect(){ global $site;
            if(empty(
    $this->connect)){
                
    $this->sql4user = (empty($site["secretkey4sqlu"])? $site["techname"]: $site["techname"]."_".$site["secretkey4sqlu"]);
                
    $this->connect = @mysql_connect((empty($site["secretkey4sqlu"])? "localhost"$site["techname"].".mysql"), $this->sql4user, (empty($site["secretkey4sqlp"])? $site["techname"]: $site["secretkey4sqlp"])) or $this->err();
                if(
    $this->iscon()){
                    
    mysql_set_charset("cp1251");
                    
    mysql_select_db($this->sql4user);
                    return 
    true;
                }else return 
    false;
            }else return 
    true;
        }
       
        public function 
    close(){
            if(
    $this->iscon()){
                if(isset(
    $this->result)) mysql_free_result($this->result);
                
    mysql_close($this->connect);
            }
        }   
     
        public function 
    iscon() {
            return (
    gettype($this->connect)=="resource") ? true false;
        }
       
        public function 
    err($err=0) {
            exit(
    "Ошибка базы данных #".(($this->iscon())? mysql_errno($this->connect): mysql_errno().". ".mysql_error()));
        }
     
        public function 
    req($req="") {
            if(
    $this->iscon()){
                
    $this->result = @mysql_query($req);
                if(
    $this->result===false){
                    
    $this->err();
                    return 
    false;
                }elseif(
    $this->result===true&&gettype($this->result)=="boolean"){
                    return array(
    "sql" => array());
                }else{
                    switch(
    mysql_num_rows($this->result)){
                        case 
    0:
                            
    $return = array();
                            break;
                        case 
    1:
                            if(
    mysql_num_fields($this->result)==1){
                                
    $row mysql_fetch_row($this->result);
                                
    $return $row[0];
                            }else 
    $return[0] = mysql_fetch_assoc($this->result);
                            break;
                        default:
                            
    $return = array();
                            while(
    $obj mysql_fetch_assoc($this->result)) array_push($return$obj);
                    }
                    return array(
    "sql" => $return);
                }   
            }else return 
    false;
        }
     
        public function 
    lastinsert(){
            
    $this->lastinsert mysql_insert_id();
            return (empty(
    $this->lastinsert)) ? false $this->lastinsert;
        }
       
        public function 
    lastupdate(){
            
    $this->lastupdate mysql_affected_rows();
            return (empty(
    $this->lastupdate)) ? false $this->lastupdate;
        }
     
    }
    /* /sql */
     
  7. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Объясни, пожалуйста, поконкретнее что именно-то надо
     
    dmx нравится это.
  8. dmx

    dmx

    Регистр.:
    22 июн 2011
    Сообщения:
    662
    Симпатии:
    527
    мои данные для коннекта вписать.
    localhost
    юзер root
    дб stroy
    без пароля.

    а вот и весь файл в аттаче

    ps какой любезный Extalionez "Объясни, пожалуйста."
     

    Вложения:

    • _init.rar
      Размер файла:
      35 КБ
      Просмотров:
      2
  9. Дмитрий Кесаев

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.265
    Убери собаку перед - @mysql_connect
    чтоб видеть ошибки подключения.

    попробуй так... может сканает)))

    PHP:
    /* sql */
    class sql{
     
        public function 
    __construct(){
            
    $this->connect();
        }
     
        public function 
    connect(){ global $site;
            if(empty(
    $this->connect)){
                
    $this->sql4user = (empty($site["secretkey4sqlu"])? $site["techname"]: $site["techname"]."_".$site["secretkey4sqlu"]);
                
    $this->connect mysql_connect("localhost""mysql_user""mysql_password");
                if(
    $this->iscon()){
                    
    mysql_set_charset("cp1251");
                    
    mysql_select_db($this->sql4user);
                    return 
    true;
                }else return 
    false;
            }else return 
    true;
        }
     
        public function 
    close(){
            if(
    $this->iscon()){
                if(isset(
    $this->result)) mysql_free_result($this->result);
                
    mysql_close($this->connect);
            }
        }
     
        public function 
    iscon() {
            return (
    gettype($this->connect)=="resource") ? true false;
        }
     
        public function 
    err($err=0) {
            exit(
    "Ошибка базы данных #".(($this->iscon())? mysql_errno($this->connect): mysql_errno().". ".mysql_error()));
        }
     
        public function 
    req($req="") {
            if(
    $this->iscon()){
                
    $this->result = @mysql_query($req);
                if(
    $this->result===false){
                    
    $this->err();
                    return 
    false;
                }elseif(
    $this->result===true&&gettype($this->result)=="boolean"){
                    return array(
    "sql" => array());
                }else{
                    switch(
    mysql_num_rows($this->result)){
                        case 
    0:
                            
    $return = array();
                            break;
                        case 
    1:
                            if(
    mysql_num_fields($this->result)==1){
                                
    $row mysql_fetch_row($this->result);
                                
    $return $row[0];
                            }else 
    $return[0] = mysql_fetch_assoc($this->result);
                            break;
                        default:
                            
    $return = array();
                            while(
    $obj mysql_fetch_assoc($this->result)) array_push($return$obj);
                    }
                    return array(
    "sql" => $return);
                }
            }else return 
    false;
        }
     
        public function 
    lastinsert(){
            
    $this->lastinsert mysql_insert_id();
            return (empty(
    $this->lastinsert)) ? false $this->lastinsert;
        }
     
        public function 
    lastupdate(){
            
    $this->lastupdate mysql_affected_rows();
            return (empty(
    $this->lastupdate)) ? false $this->lastupdate;
        }
     
    }
    /* /sql */
     
    dmx и Extalionez нравится это.
  10. dmx

    dmx

    Регистр.:
    22 июн 2011
    Сообщения:
    662
    Симпатии:
    527
    а имя базы моей куда вписать :facepalm: