На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА
Прежде чем задать вопрос, зайдите в раздел FAQ, возможно там уже есть ответ на него.
Если вы хотите вставить код в сообщение, то пожалуйста выделяйте его тегом [code=dfp] ... [/сode].
Для этого используйте кнопку [code=dfp] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Delphi for PHP.
Модераторы: ViktorXP, vicis
  
> Столкнулся с проблемой подключения к БД , MySQL
    Столкнулся с проблемой подключения к БД. Я делал так:
    Создал Database и в свойстве DatabaseName указал путь к папке с БД mysql . ( Например localhost:G:/usr/local/mysql5/data/vocabulary ). В свойстве Username указал localhost, в Userpassword пусто. Потом в свойстве DriverName указал mysql. После этого создал компоненты DataSource и Table .
    Короче, я этот пример брал со справки VCL, только указал свою базу.

    В итоге когда я запускаю, у меня появляется сообщение:
    Fatal error: Call to undefined function mysql_connect() in C:\Program Files\CodeGear\Delphi for PHP\2.0\vcl\adodb\drivers\adodb-mysql.inc.php on line 363

    В чём может быть причина неработоспособности данного примера?

    Эта тема была разделена из темы "Delphi for PHP"
      gabin а нормальный способ конекта уже отменили?
      и насколько я помню то такой извратный способ используется для конекта через ado (например к access)
      а я не помню подключается ли адо к мускулю, хотя зачем если можно нормально подключится
      да даже если и можна то точно путь к базе не понадобится. так как тойже ado нужно будет общатся с серваком
      Сообщение отредактировано: ViktorXP -
        Цитата
        gabin а нормальный способ конекта уже отменили?

        Нормальный это какой? Если мне необходимо использовать DBGrid, то откуда она будет ресурсы брать, DataSource т.е. ? Вы имеете ввиду, что не надо создавать компонент Database ?
        Цитата
        да даже если и можна то точно путь к базе не понадобится

        А как же тогда указывать путь к базе? :o
          указываешь айпишник (или localhost если на локальной машине)
          задаешь имя базы. (не путь а имя)
          логин и пароль.
          конектишся.

          Добавлено
          http://www.qadram.com/vcl4php/index.php?ac=2000
          например глянь этот пример
          http://www.qadram.com/vcl4php/samples/Data%20Aware/dbgrid.tar.gz
            Цитата
            например глянь этот пример
            http://www.qadram.com/vcl4php/samples/Data...e/dbgrid.tar.gz

            Результат такой:
            Error setting property (DBGrid::Font), doesn't exists
            Fatal error: Call to undefined method DBGrid::getFont() in C:\Program Files\CodeGear\Delphi for PHP\2.0\vcl\classes.inc.php on line 420

            Результат Ajax.Database аналогичен предыдущему посту - Fatal error: Call to undefined function mysql_connect() in C:\Program Files\CodeGear\Delphi for PHP\2.0\vcl\adodb\drivers\adodb-mysql.inc.php on line 363

            Запускает ли Delphi4php свой mysql сервер или его нужно запускать отдельно?

            Добавлено
            Запустил отдельно сервер - всё равно не работает
            Сообщение отредактировано: gabin -
              Цитата gabin @
              Запускает ли Delphi4php свой mysql сервер или его нужно запускать отдельно?

              в ДелфиФорПхп нет собственного сервера.

              Добавлено
              Цитата gabin @
              Запустил отдельно сервер - всё равно не работает

              значит что-то не так заделал
                Цитата gabin @
                Запустил отдельно сервер - всё равно не работает

                без delphiforphp проверь работает ли сервер mysql, есть ли доступ к таблице

                на сервере mysql свою базу создал ?
                в базе таблицы есть ?
                в таблицах данные есть ?
                  vicis Да, БД, таблицы , всё есть и создано. Но я запускал не конкретно MySQL сервер, а Denwer, в общем. Со скриптов к базе подключается и т.д. Я думаю , дело не в сервере.
                    если мне не изменяет память денвер позволяет одделдьно запустить мускуль, либо поставь еще один. )))
                    а еще лудше выбрось пример сюда (сам пример попробовать не смогу так как у меня ремонт и к домашней машинке нет доступа. но тут много других специалистов)
                      1. Версия MySQL 5.0.45
                      2. В модуле ошибка вылетает на процедуре
                      ExpandedWrap disabled
                        function _connect($argHostname, $argUsername, $argPassword, $argDatabasename)
                            {
                                if (!empty($this->port)) $argHostname .= ":".$this->port;
                                
                                if (ADODB_PHPVER >= 0x4300)
                                    $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword,
                                                                        $this->forceNewConnect,$this->clientFlags);
                                else if (ADODB_PHPVER >= 0x4200)
                                    $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword,
                                                                        $this->forceNewConnect);
                                else
                                    $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword);
                            
                                if ($this->_connectionID === false) return false;
                                if ($argDatabasename) return $this->SelectDB($argDatabasename);
                                return true;    
                            }

                      на 5-й строчке
                      3. MySQL запустил отдельно - ничего не изменилось.
                      4. Прикрепляю пример и базу.
                      Сообщение отредактировано: gabin -

                      Прикреплённый файлПрикреплённый файлDBsample.zip (10.2 Кбайт, скачиваний: 139)
                        Цитата gabin @
                        Столкнулся с проблемой подключения к БД. Я делал так:
                        Создал Database и в свойстве DatabaseName указал путь к папке с БД mysql . ( Например localhost:G:/usr/local/mysql5/data/vocabulary ). В свойстве Username указал localhost, в Userpassword пусто. Потом в свойстве DriverName указал mysql. После этого создал компоненты DataSource и Table .
                        Короче, я этот пример брал со справки VCL, только указал свою базу.

                        судя по файлам проекта pagecontrolsample (из архива) на форме нет компонент и кода для связи с базой данных
                        что смотреть ?
                          Исправил :huh:
                          Прикреплённый файлПрикреплённый файлsample.zip (2.08 Кбайт, скачиваний: 145)
                            у меня база не поднялась, т.к. другая версия mysql
                            создал с таким же именем базу и таблицу
                            ExpandedWrap disabled
                              CREATE TABLE `word1` (
                                `id` int(11) default NULL,
                                `name` varchar(20) default NULL
                              ) ENGINE=InnoDB DEFAULT CHARSET=latin1;


                            но дело не в базе
                            всё работает
                            если:

                            1. поставь в dbEMPLOYEE1 свойство UserPassword (если он есть)
                            2. у тебя в dbEMPLOYEE1 свойство Host = localhost:3306
                            - проверь что база находится на том же компьютере, если нет поменяй хост или поставь реальный ip или 127.0.0.1
                            - если есть что то рабочее, что работает с этой базой с твоей машины, то поставь Host как там
                            - проверь что ping localhost работает
                            - проверь что установлены права доступа к сервере mysql для такого пользователя с таким паролем с твоего хоста
                            (проверь утилитой mysql или загляни в таблицу user в базе с именем 'mysql' должна быть запись localhost,root,и здесь хеш пароля)
                            - проверь что брендмауэр не блокирует порт mysql (выключи его временно)
                            - проверь что антивирус не блокирует порт mysql (выключи его временно)
                            3. поставь в dbEMPLOYEE1 свойство Debug = 0, иначе увидиш не данные , а sql запросы vcl к базе

                            ну и для проверки подключения можно было зарегистрировать свою базу в панели DataExplorer и попробовать открыть её там
                            а потом оттуда можно на фому тащить поля и таблицы...
                              Похоже выяснил в чём проблема. Путём сравнения phpinfo() денверовского и дельфийского обнаружил, что в последнем вовсе не подключаются библиотеки БД. Из всех драйверов БД подключен только ODBC. Даже простенький скрипт подключения к БД:
                              ExpandedWrap disabled
                                $user="root";
                                $pass="";
                                $db="vocabulary";
                                mysql_connect("localhost",$user,$pass) or
                                die ("Could not connect: ".mysql_error());
                                @mysql_query("CREATE DATABASE $db");
                                mysql_select_db($db) or
                                die("Could not select database: ".mysql_error());

                              вызывает ошибку Call to undefined function mysql_connect().
                              Всё это несмотря на то, что в php.ini опция extension=php_mysql.dll раскомментирована . Тогда непонятно откуда сервер D4P берёт настройки? Хоть в директории php/ext/ лежат все модули, включая и php_mysql.dll и др. Даже библиотека gd не подключена.
                              Но есть выход чтоб запустить проект: Через Deployment Wizard экспортируем и запускаем к примеру на денвере - тогда работает. :ph34r:
                              vicis, какая у вас версия Delphi for php?
                                Цитата gabin @
                                vicis, какая у вас версия Delphi for php?

                                версия не важна
                                есть и 1-я и 2-я
                                проверял в 1-й

                                важно то, что не надо пользоваться Денверами, а надо поставить себе оригинальный сервер и настроить
                                т.к. на провайдерах никаких денверов нет
                                писал уже об этом раньше
                                как говорится: ленивый платит дважды ;)

                                Цитата gabin @
                                непонятно откуда сервер D4P берёт настройки

                                думаю отсюда CodeGear\Delphi for PHP\1.0\php
                                при этом он конфигурационный файл по ходу сам настраивает по необходимости (смотрим на дату модификации php.ini - при каждом запуске проекта на выполнение)

                                Цитата gabin @
                                Но есть выход чтоб запустить проект: Через Deployment Wizard экспортируем и запускаем к примеру на денвере - тогда работает

                                ну вообще то предполагалось что так и делаеш 8-)
                                тогда єто не настройка php.ini
                                а просто vcl библиотек не было в указанных путях
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0472 ]   [ 15 queries used ]   [ Generated: 3.05.24, 15:29 GMT ]