Forum Webscript.Ru

Программирование => PHP => Тема начата: MrGreeN от 18 Июня 2003, 15:50:31

Название: Запись под MSSQL...
Отправлено: MrGreeN от 18 Июня 2003, 15:50:31
Надоело писать лог в файл (потом если много записей долго извлекать), как бы организовать запись в чего -то типа таблицы под MS SQL ...
P.S. предлагать вариант "вручную"  - не надо.....:)
Название: Запись под MSSQL...
Отправлено: MrGreeN от 18 Июня 2003, 16:20:56
Понял...Усё в query но insert...
Название: Запись под MSSQL...
Отправлено: Ancient от 18 Июня 2003, 16:23:33
А в чем собственно проблема??? прописываем php_mssql.dll в php.ini а потом просто
mssql_connect ();
mssql_query ();
mssql_fetch_object ();
mssql_close ();
В чем конкретно трудности?
Название: Запись под MSSQL...
Отправлено: MrGreeN от 18 Июня 2003, 16:53:14
Да ни в чём, просто раньше использовал только SELECT а тут надо добавлять, ну и запаниковал...:)
Название: Запись под MSSQL...
Отправлено: Yukko от 18 Июня 2003, 17:15:46
Немного не по теме, но может кому-то пригодится

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, но я этого не пробовал и рассказывать не буду.
Название: Запись под MSSQL...
Отправлено: MrGreeN от 18 Июня 2003, 17:28:56
$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
Чего это...?
Название: Запись под MSSQL...
Отправлено: Xander от 18 Июня 2003, 17:31:51
MrGreeN
а может ты руководство по SQL прочитаешь перед тем, как на форуме паниковать? :)

Потом тебе UPDATE понадобится, DELETE, потом еще что-нибудь...
Каждый раз будешь кричать: "ЧТО ДЕЛАТЬ???" %))
Название: Запись под MSSQL...
Отправлено: Xander от 18 Июня 2003, 17:33:38
MrGreeN
это скорее всего значит то, что дату надо записывать не $Date_op="22.11.02"; а как-то по-другому. Как именно - надо выяснять. Кажется это может зависеть от региональных настроек MSSQL-сервера.
Название: Запись под MSSQL...
Отправлено: MrGreeN от 18 Июня 2003, 17:42:59
В том-то и дело что поле с датой (и всеми цифрами кроме Num и Doc_ID) у меня varchar (специально же сделал, чтобы с настройками не мучаться)....Это же просто текст...
Название: Запись под MSSQL...
Отправлено: Xander от 18 Июня 2003, 17:58:05
прямая тогда тебе дорога на http://sql.ru/
в форум по M$SQL.
там быстро ответят, я думаю.
Название: Запись под MSSQL...
Отправлено: MrGreeN от 18 Июня 2003, 18:02:23
Нееее..... сегодня не мой день явно....
Какие могут быть в char точки? Правильно - никаких...
Название: Запись под MSSQL...
Отправлено: Xander от 18 Июня 2003, 18:19:18
а теперь специально для меня - а почему в VARCHAR нельзя точки???
Название: Запись под MSSQL...
Отправлено: MrGreeN от 19 Июня 2003, 15:49:44
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)");
как бабки пошептали...запись была успешной увидел то что и захотел, но при этом как видно не может быть следующих знаков (",\',_,\\,.), т.е. не происходит приведение типа самим ПХП (в смысле к строке), пробовал даже явно указать, что переменная - строковая.....Не помогло...
Мистика....
Название: Запись под MSSQL...
Отправлено: MrGreeN от 19 Июня 2003, 18:00:21
На http://sql.ru/forum/actualthread.aspx?bid=1&tid=36383 тоже кидают стрелки на формат даты... :) Далась та дата если поле текстовое и данные текстовые...
Название: Запись под MSSQL...
Отправлено: MrGreeN от 20 Июня 2003, 14:17:05
Разобрались....Как всегда всё очень просто....
http://sql.ru/forum/actualthread.aspx?bid=1&tid=36383
:)
Название: Запись под MSSQL...
Отправлено: Xander от 20 Июня 2003, 14:55:22
угу
а ларчик просто открывался...
двойки нам за невнимательность.
Название: Запись под MSSQL...
Отправлено: MrGreeN от 20 Июня 2003, 15:11:42
Бывает,...просто  сработал условный рефлекс (помянём собачек павлова...) - если внутри двойных кавычек стоят одинарныё, то  это по любому (не знаю как это словосочетание пишется) текст, а не значение переменной....
Название: Запись под MSSQL...
Отправлено: Xander от 20 Июня 2003, 15:36:08
программист по идее должен отличаться тем, что думает, а не на рефлексх код плодит.

А по-любому пишется через дефис по единственному правилу русского языка, которое я помню:
Цитировать

"по" пишется через дефис со словами на -ому, -ему, -и
по-русски
по-любому
по-прежнему