

Сообщений в теме: 9
#1
Отправлено 11 Январь 2013 - 14:19
Добрый день! Вопрос в составление отчетов из БД mssql (Microsoft SQL Server) ну и соответственно его вывода на экран! Начну с того, что бьюсь уже пару суток, перерыл часть интернета, но пока ответа не нашел. Хочу ради пример простой запрос и простой вывод!
1. Подготавливаю данные:
$server = '192.168.0.4';
// Connect to MSSQL
$link = mssql_connect($server, 'bla-bla', 'bla-bla');
mssql_select_db('Novateks', $link);
$sqlQuery = "SELECT * FROM dbo.ZAK_OPER";
$result = mysql_query($sqlQuery);
while ($row = mysql_fetch_array($result))
{
$lines[] = $row;
}
$smarty->assign('lines', $lines);
2. Вывожу данные:
<table><tr>
{foreach from=$lines item=data}
<td>{$data.dat}</td>
<td>{$data.all}</td>
{/foreach}
</tr></table>
3. Ошибка: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/report.php(12) : eval()'d code on line 11
Связь с БД вроде есть, логин, пароль верные! (пробовал менять, выводит ошибку, то логин не такой, то БД не такая)
Может не предусмотрено в программе такие отчеты?
1. Подготавливаю данные:
$server = '192.168.0.4';
// Connect to MSSQL
$link = mssql_connect($server, 'bla-bla', 'bla-bla');
mssql_select_db('Novateks', $link);
$sqlQuery = "SELECT * FROM dbo.ZAK_OPER";
$result = mysql_query($sqlQuery);
while ($row = mysql_fetch_array($result))
{
$lines[] = $row;
}
$smarty->assign('lines', $lines);
2. Вывожу данные:
<table><tr>
{foreach from=$lines item=data}
<td>{$data.dat}</td>
<td>{$data.all}</td>
{/foreach}
</tr></table>
3. Ошибка: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/report.php(12) : eval()'d code on line 11
Связь с БД вроде есть, логин, пароль верные! (пробовал менять, выводит ошибку, то логин не такой, то БД не такая)
Может не предусмотрено в программе такие отчеты?
#2
Отправлено 11 Январь 2013 - 14:56
Программа здесь не причем. Вы сам код некорректно составили. Функции с префиксом "mysql_" предназначены для работы с БД MySQL, а не MS SQL. У вас же только подключение выполнено верно (через mssql_connect и mssql_select_db), а далее обращение к БД идет через mysql_query и т.д.
#3
Отправлено 11 Январь 2013 - 15:17
Да я уже в шоке от своих косяков)))) Ну кто их делает у того не получается! Спасибо!
В итоге как то так получилось:
$sql = "SELECT [Novateks].[dbo].[ZAK_OPER].[DAY1] AS dat FROM [Novateks].[dbo].[ZAK_OPER]";
$sql = mssql_query($sql);
while ($row = mssql_fetch_array($sql))
{
$lines[] = $row;
}
$smarty->assign('lines', $lines);
В итоге как то так получилось:
$sql = "SELECT [Novateks].[dbo].[ZAK_OPER].[DAY1] AS dat FROM [Novateks].[dbo].[ZAK_OPER]";
$sql = mssql_query($sql);
while ($row = mssql_fetch_array($sql))
{
$lines[] = $row;
}
$smarty->assign('lines', $lines);
#4
Отправлено 16 Январь 2013 - 14:49
Добрый день! В продолжении связки, прошу помочь: Делаю запрос, все выводится почти хорошо, не считая крякозябру! Как ее победить не знаю, вот и прошу помощи: база mssql в кодировке Cyrillic_General_BIN. Сайт выводит в кодировке UTF-8, меняю на cp1251 - мои данные нормально выводятся, а весь сайт в кракозябрах!
#5
Отправлено 16 Январь 2013 - 15:02
AssVlad (16 Январь 2013 - 14:49) писал:
Добрый день! В продолжении связки, прошу помочь: Делаю запрос, все выводится почти хорошо, не считая крякозябру! Как ее победить не знаю, вот и прошу помощи: база mssql в кодировке Cyrillic_General_BIN. Сайт выводит в кодировке UTF-8, меняю на cp1251 - мои данные нормально выводятся, а весь сайт в кракозябрах!
Конвертировать кодировку можно через функцию iconv
#6
Отправлено 17 Январь 2013 - 13:53
CbCoder (16 Январь 2013 - 15:02) писал:
Конвертировать кодировку можно через функцию iconv
$server = '192.168.0.4';
// Connect to MSSQL
$link = mssql_connect($server, '999', '999');
mssql_select_db('Novateks', $link);
$sql = "SELECT [Novateks].[dbo].[ZAK_HEAD].[NUM] AS nom, [Novateks].[dbo].[ZAK_HEAD].[DATA1] AS dat, [Novateks].[dbo].[ZAK_HEAD].[NAIM] AS naim, [Novateks].[dbo].[ZAK_HEAD].[KLIENT] AS klient
FROM [Novateks].[dbo].[ZAK_HEAD] INNER JOIN [Novateks].[dbo].[ZAK_OPER] ON [Novateks].[dbo].[ZAK_HEAD].[UNZ] = [Novateks].[dbo].[ZAK_OPER].[UNZ]
GROUP BY [Novateks].[dbo].[ZAK_HEAD].[NUM], [Novateks].[dbo].[ZAK_HEAD].[DATA1], [Novateks].[dbo].[ZAK_HEAD].[NAIM], [Novateks].[dbo].[ZAK_HEAD].[KLIENT]";
iconv("CP1251", "UTF-8", $sql);
$sql = mssql_query($sql);
while ($row = mssql_fetch_array($sql))
{
$lines[] = $row;
}
$smarty->assign('lines', $lines);
ниче не выходит!!!
#7
Отправлено 17 Январь 2013 - 14:19
Зачем вы запрос то конвертируете, я не понял? Конвертировать нужно результат! Я же вам дал ссылку на документацию.
$field22_value = $row['field22']; $field22_value_utf8 = iconv("CP1251", "UTF-8", $field22_value);
#8
Отправлено 17 Январь 2013 - 14:46
Если честно, то совсем не понял! Это в подготовке данных делать или в отображение?
#9
Отправлено 17 Январь 2013 - 15:02
AssVlad (17 Январь 2013 - 14:46) писал:
Если честно, то совсем не понял!
Что конкретно непонятно? Функция преобразует значение поля из одной кодировки в другую. Это всего лишь наглядный пример, вне прямой связи с вашим кодом. В вашем случае будет примерно так:
.... $sql = mssql_query($sql); while ($row = mssql_fetch_array($sql)) { $line['field22'] = iconv("CP1251", "UTF-8", $row['field22']); .... $lines[] = $line; } .....
AssVlad (17 Январь 2013 - 14:46) писал:
Это в подготовке данных делать или в отображение?
Все php-вычисления выполняются в коде подготовки данных, разумеется.
#10
Отправлено 27 Апрель 2016 - 22:53
AssVlad (11 Январь 2013 - 14:19) писал:
Добрый день! Вопрос в составление отчетов из БД mssql (Microsoft SQL Server) ну и соответственно его вывода на экран! Начну с того, что бьюсь уже пару суток, перерыл часть интернета, но пока ответа не нашел. Хочу ради пример простой запрос и простой вывод! 1. Подготавливаю данные: $server = '192.168.0.4'; // Connect to MSSQL $link = mssql_connect($server, 'bla-bla', 'bla-bla'); mssql_select_db('Novateks', $link); $sqlQuery = "SELECT * FROM dbo.ZAK_OPER"; $result = mysql_query($sqlQuery); while ($row = mysql_fetch_array($result)) { $lines[] = $row; } $smarty->assign('lines', $lines); 2. Вывожу данные: {foreach from=$lines item=data} {/foreach} {$data.dat} {$data.all}
3. Ошибка: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/report.php(12) : eval()'d code on line 11 Связь с БД вроде есть, логин, пароль верные! (пробовал менять, выводит ошибку, то логин не такой, то БД не такая) Может не предусмотрено в программе такие отчеты?
3. Ошибка: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/report.php(12) : eval()'d code on line 11 Связь с БД вроде есть, логин, пароль верные! (пробовал менять, выводит ошибку, то логин не такой, то БД не такая) Может не предусмотрено в программе такие отчеты?
Как вы к MySQL подключались, подскажите?
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных