Проблема со связями внутри класса.

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

black_raven

Новичок
Проблема со связями внутри класса.

Внутри класса в конструкторе указываю начало соединения с mysql и выбор БД (mysql_connect, mysql_select_db).
В остальных функциях соответственно работаю исходя из того, что соединение уже установлено, а в деструкторе грохаю соединение (mysql_close).
Под виндами на денвере работает нормально, но при перенесении на хостинг провайдера выдает ошибку Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2). Если подключение и выбор БД засунуть внутрь функции из которой происходит запрос, все начинает нормально работать, однако хочется разобраться в чем дело.
Есть идеи?
 

Frol

Новичок
потому что имея денвер отпадает необходимость в понимании многого.
например, выше приведенная ошибка.
сли подключение и выбор БД засунуть внутрь функции из которой происходит запрос, все начинает нормально работать, однако хочется разобраться в чем дело.
а вот ссылку я дал именно для этого случая.
 

black_raven

Новичок
Автор оригинала: Frol
потому что имея денвер отпадает необходимость в понимании многого.
например, выше приведенная ошибка.
а вот ссылку я дал именно для этого случая.
Ссылка конечно интересная, но в данном случае бесполезна. Ошибок в коде нет. То есть они конечно есть, но допущены не по случаю, а умышленно, а вот теперь хочется понять почему разделение коннекта с выбором базы и непосредственно запросом к базе по разным функциям одного класса рубит процесс на корню. Единственная ошибка, которая выдается обозначена в первом посте.
Как связать коннект и запрос?
 

black_raven

Новичок
PHP:
<?
class page {
   function __construct(){
      if (!@mysql_connect($host, $login, $password)) {
         echo mysql_error();
         exit;
      }
      if (!@mysql_select_db($db)) {
         echo mysql_error();
         exit;
      }
   }
   function __destruct() {
      mysql_close();
   }
   function pages() {
    $result = mysql_query("select * from table");
    $rows = mysql_num_rows($result);
    if ($rows) {
     while($row=mysql_fetch_array($result)) {
      echo $row['string1'];
     }
    }
    else echo "Записей нет";
   }
}
$page = new page;
echo $page->pages();
$page=null;
?>
Ответ сервера
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
 

an_kalinovski

Новичок
Проверь какой хост указываешь при коннекте - не свой ли локалхост вместо хоста провайдера или типа того...
 

tony2001

TeaM PHPClub
if (!@mysql_connect($host, $login, $password)) {
echo mysql_error();
exit;
}

ага. ну всё понятно.
1) убери собаку
2) храни коннект в атрибуте класса и передавай его всем mysql_*()
 

whisk

Новичок
точно на хостинге php5? а то в 4ке конструктор не сработает. mysql_query сам может выдавать варнинги типа

mysql_query(): Access denied for user 'ODBC'@'localhost' (using password: NO) ...

даже если не было mysql_connect.
 

WP

^_^
Слив засчитан. Поставлю вопрос более конкретно. Тредстартер слыхал про область видимости переменных?
 

black_raven

Новичок
whisk
Гениально! А я не врубился. Все элементарно и просто. Это пять. Спасибо.

-~{}~ 15.09.06 12:20:

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