Что нового

Как работать с dll и вызовом функций для работы с БД

eropov

Jury
Сообщения
195
Репутация
25
Здравствуйте, скажите как работать с подключенной dll библиотекой php.
Нужно вызвать функцию для работы с БД, некоторые функции возвращают тип данных resource, как с ним работать.
Вызываю функцию подключения, выдает error, который говорит что используется неизвестный тип данных
Код:
$result = DllCall("func.dll", "resource", "mysql_connect", "str", $host, "str", $user, "str", $pswd)
MsgBox(1,"mysql_connect",@error)


Может кто из гуру AutoIT поможет?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Нажимаешь на
Код:
DLLCALL
смотришь, что resource не является валидным типом, читаешь описание функции mysql_connect, ищешь что она возвращает. (Если указатель то вместо resource используй ptr)
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Такого типа данных не существует. "resource" - это дескриптор соединения, т.е. "ptr".
 
Автор
E

eropov

Jury
Сообщения
195
Репутация
25
Поменял тип, ничего не изменилось.
Заметьте что, функция php называется mysql_connect, а открыв DLL программой DLL Export Viewer нашел только название функции mysqlnd_connect. Если использовать название mysql_connect, то получаю error что функция не найдена, а если использовать название mysqlnd_connect, то получаю окно ошибки.

Код:
#include <Array.au3>

$host = "localhost"; // имя хоста (уточняется у провайдера)
$user = "root"; // заданное вами имя пользователя, либо определенное провайдером
$pswd = ""; // заданный вами пароль
$database = "dle"; // имя базы данных, которую вы должны создать

$dll = DllOpen("php5ts.dll")
MsgBox(1, $dll, @error)

$result = DllCall($dll, "ptr", "mysqlnd_connect", "str", $host, "str", $user, "str", $pswd)
MsgBox(1, "mysql_connect ", @error)

$result = DllCall($dll, "bool", "mysql_select_db", "str", $database)
MsgBox(1, "mysql_select_db ", @error)

$query = "SELECT * FROM `dle_post`";// запрос на получение всей таблици
$res = DllCall($dll, "resource", "mysql_query", "str", $query); //записываем таблицу в переменную
MsgBox(1, "mysql_query", @error)

$row = DllCall($dll, "ptr", "array", "mysql_fetch_array", "ptr", $res)
MsgBox(1, "mysql_fetch_array", @error)
_ArrayDisplay($row)
DllClose($dll)
 
Автор
E

eropov

Jury
Сообщения
195
Репутация
25
Garrett все это хорошо конечно, изучайте и т.д, но неужели ни кто не подключал или даже не пробовал подключить DLL php, и что дельного ответа мне не получить? :shok: Раз вы знаете, что нужно изучать, значит вы хоть что то об этом знаете, с API ни когда не работал, что и как происходит не знаю, может найдется человек который подобное реализовывал?
 

XpycT

Скриптер
Сообщения
380
Репутация
133
eropov
А зачем такие сложности с подключением DLL php, для того что бы работать с MySQL???

Не проще будет использовать MySQL ODBC???
 
Автор
E

eropov

Jury
Сообщения
195
Репутация
25
ХрусТ
Мне нужно использовать не только mysql php, но и по надобности остальные функции php.
 
Автор
E

eropov

Jury
Сообщения
195
Репутация
25
Да, спасибо всем кто помог, проблема так и осталась не решенной. Выход только один писать прогу под ось на php. :smile:
 
Верх