Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для Romzik85
5 / 5 / 2
Регистрация: 04.01.2014
Сообщений: 36

Php запросы в mssql

12.01.2015, 22:50. Показов 2668. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Подскажите пожалуйста почему через обычный запрос всё выводится, а через PDO ошибки и только


тут всё норм отображается
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
$server = "ип:порт"; ini_set('mssql.charset', "windows-1251");
$ms = mssql_connect($server, 'юзер', 'пасс');
function conv_out($str) {   return iconv("windows-1251", "UTF-8", $str);    }
 
 
$data_res = array();
 
$query1 = mssql_query("SELECT [m_idPlayer], [m_idGuild] FROM [CHARACTER_01_DBF].[dbo].[GUILD_MEMBER_TBL] WHERE [m_nMemberLv]='0'");
$query2 = mssql_query("SELECT [m_idGuild], [m_nLevel], [m_szGuild], [m_nWin], [m_nLose] FROM [CHARACTER_01_DBF].[dbo].[GUILD_TBL] ORDER by [m_nLevel] DESC");
$query3 = mssql_query("SELECT [m_idPlayer], [m_szName], [m_chAuthority] FROM [CHARACTER_01_DBF].[dbo].[CHARACTER_TBL]");
 
 
while($res = mssql_fetch_array($query2))
{
    $data_res['Guild'][$res['m_idGuild']]['name'] = conv_out($res['m_szGuild']);
    $data_res['Guild'][$res['m_idGuild']]['LvL'] = $res['m_nLevel'];
    $data_res['Guild'][$res['m_idGuild']]['WIN'] = $res['m_nWin'];
    $data_res['Guild'][$res['m_idGuild']]['LOSE'] = $res['m_nLose'];
}
while($res = mssql_fetch_array($query1))
    $data_res['Guild'][$res['m_idGuild']]['Leader'] = $res['m_idPlayer'];
 
while($res = mssql_fetch_array($query3))
{
    $data_res['Players'][$res['m_idPlayer']]['name'] = conv_out($res['m_szName']);
    $data_res['Players'][$res['m_idPlayer']]['Group'] = $res['m_chAuthority'];
}
$key = array_keys($data_res['Guild']);
 
 
$result = false;
$i = 0;
 
for ($c = 0,$s=1;;$i++)
{
    if ($i > count($key)-1)
        break;
 
    $group = $data_res['Players'][$data_res['Guild'][$key[$i]]['Leader']]['Group'];
 
    if ($group != 'F')
        continue;
 
    if($s == 1)
        $ii = "<span style='color: #F30000;'>".$s."</span>";
    elseif($s == 2)
        $ii = "<span style='color: #F37800;'>".$s."</span>";
    elseif($s == 3)
        $ii = "<span style='color: #FFFC00;'>".$s."</span>";
    else
        $ii = $s;
 
    $result .= '<tr>
        <td>'.$ii.'</td>
        <td style="text-align: center;">'.$data_res['Guild'][$key[$i]]['name'].'</td>
        <td style="text-align: center;">'.$data_res['Guild'][$key[$i]]['LvL'].'</td>
        <td style="text-align: center;">'.$data_res['Guild'][$key[$i]]['WIN'].'</td>
        <td style="text-align: center;">'.$data_res['Guild'][$key[$i]]['LOSE'].'</td>
        <td style="text-align: center;">'.$data_res['Players'][$data_res['Guild'][$key[$i]]['Leader']]['name'].'</td></rt>';
        $s++;
    $c++;
}
$ress = '<table style="width: 100%;">
            <tr>
                <td id="key" style="text-align: center;">#</td>
                <td id="key" style="text-align: center;">Название</td>
                <td id="key" style="text-align: center;">Уровень</td>
                <td id="key" style="text-align: center;">Побед</td>
                <td id="key" style="text-align: center;">Поражений</td>
                <td id="key" style="text-align: center;">Лидер</td>
            </tr>
            <tr>
                '.$result.'
            </tr>
        </table>';
echo $ress;
тут ошибки
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
function conv_out($str) {   return iconv("windows-1251", "UTF-8", $str);    }
$mssql = array (
    "host"          => "ип",
    "port"          => "порт",
    "user"          => "юзер",
    "pass"          => "пасс",
    "dbname"        => "имя бд",
    "charset"       => "windows-1251"
);
$sql = new PDO('dblib:dbname='.$mssql['dbname'].';host='.$mssql['host'].':'.$mssql['port'], $mssql['user'], $mssql['pass']);
 
function top_guilds()
{
    global $sql;
    $result = NULL;
    $data_res['Guild'] = array();
    $Guild1 = $sql->prepare("SELECT [m_idPlayer], [m_idGuild] FROM [CHARACTER_01_DBF].[dbo].[GUILD_MEMBER_TBL] WHERE [m_nMemberLv]='0'");
    $Guild1->execute();
    $Guild2 = $sql->prepare("SELECT [m_idGuild], [m_nLevel], [m_szGuild], [m_nWin], [m_nLose] FROM [CHARACTER_01_DBF].[dbo].[GUILD_TBL] ORDER by [m_nLevel] DESC");
    $Guild2->execute();
    $Guild3 = $sql->prepare("SELECT [m_idPlayer], [m_szName], [m_chAuthority] FROM [CHARACTER_01_DBF].[dbo].[CHARACTER_TBL]");
    $Guild3->execute();
 
    while($res = $Guild2->fetch())
    {
        $data_res['Guild'][$res['m_idGuild']]['name'] = conv_out($res['m_szGuild']);
        $data_res['Guild'][$res['m_idGuild']]['LvL'] = $res['m_nLevel'];
        $data_res['Guild'][$res['m_idGuild']]['WIN'] = $res['m_nWin'];
        $data_res['Guild'][$res['m_idGuild']]['LOSE'] = $res['m_nLose'];
    }
 
    while($res = $Guild1->fetch())
        $data_res['Guild'][$res['m_idGuild']]['Leader'] = $res['m_idPlayer'];
 
    while($res = $Guild3->fetch())
    {
        $data_res['Players'][$res['m_idPlayer']]['name'] = conv_out($res['m_szName']);
        $data_res['Players'][$res['m_idPlayer']]['Group'] = $res['m_chAuthority'];
    }
 
    $key = array_keys($data_res['Guild']);
    $i = 0;
 
    for ($c = 0,$s=1;;$i++)
    {
        if ($i > count($key)-1)
            break;
 
        $group = $data_res['Players'][$data_res['Guild'][$key[$i]]['Leader']]['Group'];
 
        if ($group != 'F')
            continue;
 
        if($s == 1)
            $ii = "<span style='color: #F30000;'>".$s."</span>";
        elseif($s == 2)
            $ii = "<span style='color: #F37800;'>".$s."</span>";
        elseif($s == 3)
            $ii = "<span style='color: #FFFC00;'>".$s."</span>";
        else
            $ii = $s;
 
        $result .= '
            <td>'.$ii.'</td>
            <td style="text-align: center;">'.$data_res['Guild'][$key[$i]]['name'].'</td>
            <td style="text-align: center;">'.$data_res['Guild'][$key[$i]]['LvL'].'</td>
            <td style="text-align: center;">'.$data_res['Guild'][$key[$i]]['WIN'].'</td>
            <td style="text-align: center;">'.$data_res['Guild'][$key[$i]]['LOSE'].'</td>
            <td style="text-align: center;">'.$data_res['Players'][$data_res['Guild'][$key[$i]]['Leader']]['name'].'</td>';
            $s++;
        $c++;
    }
    $ress = '<table style="width: 100%;">
                <tr>
                    <td id="key" style="text-align: center;">#</td>
                    <td id="key" style="text-align: center;">Название</td>
                    <td id="key" style="text-align: center;">Уровень</td>
                    <td id="key" style="text-align: center;">Побед</td>
                    <td id="key" style="text-align: center;">Поражений</td>
                    <td id="key" style="text-align: center;">Лидер</td>
                </tr>
                <tr>
                    '.$result.'
                </tr>
            </table>';
    return $ress;
}
 
echo top_guilds();
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.01.2015, 22:50
Ответы с готовыми решениями:

sql запросы и переменные php
Добрый день. У меня есть вот такой фрагмент кода, который должен брать id из одной таблицы и записывать его в другую: ...

Не работают некоторые запросы в БД из PHP через AJAX с HTML страницы
Делаю сайт отеля, где есть возможность сложного поиска по номерам отеля, который кстати говоря работает полностью. А также возможность в...

msSQL запросы
Здравствуйте, у меня вот такая проблема - путаюсь в msSQL, напишите, пожалуйста, аналоги запросов mySQL, на msSQL: SELECT * FROM...

8
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
13.01.2015, 18:55
Вы используете не очень свежие расширение для работы с MSSQL.

Переходите соответственно на эти:
http://php.net/sqlsrv
http://php.net/pdo_sqlsrv

Их поддержкой занимается непосредственно Microsoft.

PS: А что за ошибки?
0
 Аватар для Romzik85
5 / 5 / 2
Регистрация: 04.01.2014
Сообщений: 36
13.01.2015, 21:52  [ТС]
Цитата Сообщение от Tatikoma Посмотреть сообщение
Вы используете не очень свежие расширение для работы с MSSQL.

Переходите соответственно на эти:
http://php.net/sqlsrv
http://php.net/pdo_sqlsrv

Их поддержкой занимается непосредственно Microsoft.

PS: А что за ошибки?
по поводу перехода на новое подключение: Fatal error: Call to undefined function sqlsrv_connect().....
в дебиане нет такого

вот такие ошибки...
Кликните здесь для просмотра всего текста

Notice: Undefined index: m_idGuild in /http/www/t2.php on line 29

Notice: Undefined index: m_szGuild in /http/www/t2.php on line 29

Notice: Undefined index: m_idGuild in /http/www/t2.php on line 30

Notice: Undefined index: m_nLevel in /http/www/t2.php on line 30

Notice: Undefined index: m_idGuild in /http/www/t2.php on line 31

Notice: Undefined index: m_idGuild in /http/www/t2.php on line 32

Notice: Undefined index: m_idGuild in /http/www/t2.php on line 29

Notice: Undefined index: m_szGuild in /http/www/t2.php on line 29

Notice: Undefined index: m_idGuild in /http/www/t2.php on line 30
и ещё много таких же
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
14.01.2015, 15:19
Цитата Сообщение от Romzik85 Посмотреть сообщение
по поводу перехода на новое подключение: Fatal error: Call to undefined function sqlsrv_connect().....
в дебиане нет такого
Использовать связку MSSQL с Debian, - это прямо верх извращенства. Какой-то сервер игры крутится на MSSQL, а вы с неё данные отображать пытаетесь, я так полагаю?

Цитата Сообщение от Romzik85 Посмотреть сообщение
вот такие ошибки...
Сделайте var_dump($res);, что у вас туда вообще попадает?
0
 Аватар для Romzik85
5 / 5 / 2
Регистрация: 04.01.2014
Сообщений: 36
14.01.2015, 15:27  [ТС]
Цитата Сообщение от Tatikoma Посмотреть сообщение
Использовать связку MSSQL с Debian, - это прямо верх извращенства. Какой-то сервер игры крутится на MSSQL, а вы с неё данные отображать пытаетесь, я так полагаю?
Верно понимаете, но использовать апач на винде, когда имеется очень много желающих что бы мой проект закрылся, тоже не вариант.. что бы я только не делал.. сайт загибается от одного нажатия(и удерживания) на F5.. поэтому я поехал на linux...
Цитата Сообщение от Tatikoma Посмотреть сообщение
Сделайте var_dump($res);, что у вас туда вообще попадает?
bool(false) почему то... хотя при обычном подключении всё есть... странно
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
14.01.2015, 15:54
Цитата Сообщение от Romzik85 Посмотреть сообщение
Верно понимаете, но использовать апач на винде, когда имеется очень много желающих что бы мой проект закрылся, тоже не вариант.. что бы я только не делал.. сайт загибается от одного нажатия(и удерживания) на F5.. поэтому я поехал на linux...
У меня был только один проект с использованием MSSQL, - это было обязательное условие заказчика - всё должно быть энтерпрайзно и на винде. У меня вполне себе сносно на нём работал IIS с подключенным к нему PHP. Конечно не так круто, как под *nix, но что поделать. Причем это было несколько месяцев назад и как раз тогда любое подключение к MSSQL из под *nix, - было путем костылей и подпорок. Так что удивляться сильно не стоит.
Цитата Сообщение от Romzik85 Посмотреть сообщение
bool(false) почему то... хотя при обычном подключении всё есть... странно
Ну так согласно документации "Returns TRUE on success or FALSE on failure.".
Загляните в $Guild2->errorInfo и $Guild2->errorCode, там должна быть более подробная информация о том что пошло не так.

Вообще, если вам не совсем чужда работа с исключениями (впрочем даже если чужда, - не суть, - привыкните), настоятельно рекомендую заглянуть сюда:
http://php.net/manual/en/pdo.error-handling.php
PHP
1
2
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
В таком случае если что-то идет не так, - вместо возврата false вы будете получать исключение, которое скорее всего сразу увидите на этапе разработки и удобно обработаете в продакшне.
0
 Аватар для Romzik85
5 / 5 / 2
Регистрация: 04.01.2014
Сообщений: 36
14.01.2015, 15:59  [ТС]
Цитата Сообщение от Tatikoma Посмотреть сообщение
Загляните в $Guild2->errorInfo и $Guild2->errorCode;
Undefined property: PDOStatement::$errorInfo in /http/www/t2.php
Undefined property: PDOStatement::$errorCode in /http/www/t2.php
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
14.01.2015, 16:02
Лучший ответ Сообщение было отмечено Romzik85 как решение

Решение

Romzik85, http://php.net/PDO_Statement
Это не свойство, а метод, я просто скобочки не нарисовал. Дорисуйте скобочки согласно документации. А еще лучше, - подумайте над переходом на обработку ошибок посредством исключений =)
1
 Аватар для Romzik85
5 / 5 / 2
Регистрация: 04.01.2014
Сообщений: 36
14.01.2015, 16:14  [ТС]
Вопрос разрешился используя такой запрос...
SQL
1
2
3
4
SELECT * FROM (SELECT m_idPlayer, m_idGuild FROM [CHARACTER_01_DBF].[dbo].[GUILD_MEMBER_TBL] WHERE m_nMemberLv='0') t1
            FULL JOIN (SELECT m_idPlayer, m_szName FROM [CHARACTER_01_DBF].[dbo].[CHARACTER_TBL] WHERE m_chAuthority = 'F') t2 ON t1.m_idPlayer = t2.m_idPlayer
            FULL JOIN (SELECT m_idGuild, m_nLevel, m_szGuild, m_nWin, m_nLose FROM [CHARACTER_01_DBF].[dbo].[GUILD_TBL]) t3 ON t1.m_idGuild = t3.m_idGuild
            WHERE (t1.m_idGuild > 0 AND t2.m_idPlayer > 0) ORDER BY t3.m_nLevel DESC
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.01.2015, 16:14
Помогаю со студенческими работами здесь

MSSQL: как соединяться с БД, отправлять запросы и т.д.
Приветствую, форумчане. итак: Есть бд MSSQL Server 2012 RC0, есть visual studio 2010. необходимо: написать программу для работы с...

Дружба Denwer(PHP 5.3.3) с MSSQL 2008 R2. Не удаётся установить подключения к MS SQL через PHP код
Доброго времени суток. Столкнулся с проблемой подключения к базе данных Microsoft SQL server 2008 R2. Все действия происходят на одном...

php и mssql
Подскажите пожалуйста. У меня есть программа, писал ее на C#, в программе реализованно подключение к mssql серверу, все уже давно написано...

MSSQL и PHP
Никак не могу их подружить. В php.ini добавил &quot;extension=php_sqlsrv_53_ts.dll&quot; В папку &quot;C:\webserver\php\ext&quot; положил библиотеку...

Php 5.3 + mssql 2000
Тема может не нова, но вот беда. Шарахнулся в инет - вроде как 5.3 не идет со стандартными драйверами для мсскл. Пытаюсь с денвера...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru