Forum Webscript.Ru
Программирование => PHP => Тема начата: MrGreeN от 18 Июня 2003, 15:50:31
-
Надоело писать лог в файл (потом если много записей долго извлекать), как бы организовать запись в чего -то типа таблицы под MS SQL ...
P.S. предлагать вариант "вручную" - не надо.....:)
-
Понял...Усё в query но insert...
-
А в чем собственно проблема??? прописываем php_mssql.dll в php.ini а потом просто
mssql_connect ();
mssql_query ();
mssql_fetch_object ();
mssql_close ();
В чем конкретно трудности?
-
Да ни в чём, просто раньше использовал только SELECT а тут надо добавлять, ну и запаниковал...:)
-
Немного не по теме, но может кому-то пригодится
Linux + PHP +MsSQL miniHowto
Стала задача использовать базу данных на MsSQL обращаясь к ней на РНР из-под Linux.
Что нужно?
1. Собственно MsSQL (адрес машины 192.168.0.4, порт 1433, у меня версия 2000)
2. PHP в исходных кодах
3. библиотека freetds, качать отсюда http://ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-0.61.tgz
4. Linux на другой машине
Распаковываем freetds заходим в каталог и делаем
./configure
make
make install
Можно использовать опции для ./configure, но это не обязательно, раньше он требовал установки --with-prefix=/usr/local/freetds , но сейчас префикс по-умолчанию стоит /usr/local и это правильно!
После компиляции идем в /usr/local/etc и находим файл freetds.conf , в ранних версиях там был файл interfaces, но все его настройки переехали в freetds.conf, библиотека, которая необходима для подключения к MsSQL лежит в /usr/local/lib
Правим freetds.conf,
Вписываем туда такие строки:
# Microsoft SQL Server 2000 configuration
[MyServer2000]
host = 192.168.0.4 #адрес сервера
port = 1433 #порт сервера
tds version = 8.0 #версия протокола tds
Идем в директорию с исходниками PHP.
Пишем:
./configure --with-mssql=/usr/local (далее идут другие опции)
make
make install
На РНР пишем:
$con = mssql_connect ("192.168.0.4:1433", "DbReader", "dbreadersql");
echo $con;
?>
Знающие люди говорят, что с последней версией freetds надо коннектиться указав не 192.168.0.4:1433, а указав номер порта через запятую, но я такой особенности не заметил более того вариант
192.168.0.4,1433 не катит (выдает сообщение об ошибке).
Стоит отметить, что при помощи библиотеки tds, можна также коннектиться к Sybase, но я этого не пробовал и рассказывать не буду.
-
$con=mssql_connect ("Lib","internet","internet");
$Date_op="22.11.02";
$Time_op="12:15:36";
$Phys_way="way";
$Doc_full_name="Maximum Security: A Hackers Guide to Protecting Your Internet Site and Network";
$Doc_ID=20551;
$us_name="name";
$us_IP="xxx.xxx.xxx.xxx";
$Result=mssql_query("insert into Access_log (Num,Date_op,Time_op,Phys_way,Doc_full_name,Doc_ID,us_name,us_IP) values ($Num,$Date_op,$Time_op,$Phys_way,$Doc_full_name,$Doc_ID,$us_name,$us_IP)");//(string 22)
и ворнинги...
Warning: MS SQL message: Line 1: Incorrect syntax near \'.02\'. (severity 15) in c:\\inetpub\\wwwroot\\tests\\index.php on line 22
Warning: MS SQL: Query failed in c:\\inetpub\\wwwroot\\tests\\index.php on line 22
Чего это...?
-
MrGreeN
а может ты руководство по SQL прочитаешь перед тем, как на форуме паниковать? :)
Потом тебе UPDATE понадобится, DELETE, потом еще что-нибудь...
Каждый раз будешь кричать: "ЧТО ДЕЛАТЬ???" %))
-
MrGreeN
это скорее всего значит то, что дату надо записывать не $Date_op="22.11.02"; а как-то по-другому. Как именно - надо выяснять. Кажется это может зависеть от региональных настроек MSSQL-сервера.
-
В том-то и дело что поле с датой (и всеми цифрами кроме Num и Doc_ID) у меня varchar (специально же сделал, чтобы с настройками не мучаться)....Это же просто текст...
-
прямая тогда тебе дорога на http://sql.ru/
в форум по M$SQL.
там быстро ответят, я думаю.
-
Нееее..... сегодня не мой день явно....
Какие могут быть в char точки? Правильно - никаких...
-
а теперь специально для меня - а почему в VARCHAR нельзя точки???
-
Xander
Сам уже не пойму....Когда сделал запись напрямую - типа
$Result=mssql_query("insert into Access_log (Num,Date_op,Time_op,Phys_way,Doc_full_name,Doc_ID
,us_name,us_IP) values (Num,Dateop,Timeop,Physway,Docfullname,
DocID,usname,usIP)");
как бабки пошептали...запись была успешной увидел то что и захотел, но при этом как видно не может быть следующих знаков (",\',_,\\,.), т.е. не происходит приведение типа самим ПХП (в смысле к строке), пробовал даже явно указать, что переменная - строковая.....Не помогло...
Мистика....
-
На http://sql.ru/forum/actualthread.aspx?bid=1&tid=36383 тоже кидают стрелки на формат даты... :) Далась та дата если поле текстовое и данные текстовые...
-
Разобрались....Как всегда всё очень просто....
http://sql.ru/forum/actualthread.aspx?bid=1&tid=36383
:)
-
угу
а ларчик просто открывался...
двойки нам за невнимательность.
-
Бывает,...просто сработал условный рефлекс (помянём собачек павлова...) - если внутри двойных кавычек стоят одинарныё, то это по любому (не знаю как это словосочетание пишется) текст, а не значение переменной....
-
программист по идее должен отличаться тем, что думает, а не на рефлексх код плодит.
А по-любому пишется через дефис по единственному правилу русского языка, которое я помню:
"по" пишется через дефис со словами на -ому, -ему, -и
по-русски
по-любому
по-прежнему