kickbeat
Новичок
Доброго времени суток!
Делаю запрос к БД MS SQL через ajax.
в sqlQuery.php делается выборка и формируется массив
в средствах разработчика браузера результат всего этого:
- в логах "error: SyntaxError: Синтаксическая ошибка"
- в network есть запись о запросе, но получено 0 B
Проблема в том, что данный SELECT был отлажен в MS SQL Server Manadement Studio. И там он отлично работает. Но при копировании запроса в php, результатом становится "синтаксическая ошибка" (результат не меняется, если вместо переменных вставляю явные значения). Как я понимаю, для php чего-то в этом запросе не хватает. Синтаксис php проверялся неоднократно - вместо переменных вставлял обычные значения, все двойные/одинарные кавычки, скобки, точки с запятой - все, вроде бы, на месте, но...
p.s. Не знаю поможет ли эта история, но вот работающий запрос (собственно его и переделываю):
так вот изначально он был без where в 10-й (предпоследней) строке и все в той же менеджмент студии работал отлично, но при вставке в php работать отказывался. Я уже не помню, как додумался до добавления этой 10-й строки, однако смысла ее добавления ни тогда, ни сейчас так и не понял и воспринимал, как бубен. Но вот второй запрос со схожими симптомами вызывает подозрения...

0
Делаю запрос к БД MS SQL через ajax.
Код:
function getActiveDevice(tec_id, device_id) {
$.ajax({
url: "php/sqlQuery.php",
type: "GET",
dataType: "json",
data: {
tec_id:tec_id,
device_id:device_id
},
success:function(result){
console.log("Success: ", result);
},
error:function(jqXHR, textStatus, errorThrown) {
console.log('textStatus: '+ textStatus);
console.log('error: ' + errorThrown);
}
});
}
в sqlQuery.php делается выборка и формируется массив
PHP:
<?php
$id_tec = $_GET['tec_id'];
$id_device = $_GET['device_id'];
// подключение к БД
include_once '../php/DBconnect.php';
if ($id_tec == 0) {
echo json_encode(array("c" => "all"));
exit();
} else {
// выборка из объединенных таблиц gftec и Device по полю gftec.tabl=device.id
// !!вопрос в этом запросе!!
$db_query = "SELECT gftec.[Id]
,gftec.[ID_TEC]
,gftec.[dattime]
,gftec.[p]
,gftec.[t]
,gftec.[q]
,gftec.[tabl]
,Device.[ID] as 'id_dev'
,Device.[Name]
,Device.[OrderNum]
,Device.[IdDataType]
FROM (
SELECT * FROM gftec WHERE [ID_TEC]=".$id_tec.") AS gftec JOIN (
SELECT * FROM Device WHERE [Id_tec]=".$id_tec.") AS device ON gftec.[tabl]=device.[ID]
WHERE gftec.[Id] IN (select max(Id) FROM gftec WHERE gftec.[ID_TEC]=".$id_tec." GROUP BY gftec.[tabl])
ORDER BY device.[OrderNum]";
}
// формирование массива значений
$odbc_result = odbc_exec($db_connect,$db_query);
$device_cont = odbc_num_rows($odbc_result);
if ($odbc_result) {
for ($i=0; $i <$device_cont ; $i++) {
$res_d_name[$i] = odbc_result($odbc_result,"Name");
$res_p[$i] = odbc_result($odbc_result,"p");
$res_t[$i] = odbc_result($odbc_result,"t");
$res_q[$i] = odbc_result($odbc_result,"q");
$res_dattime[$i] = date("d:m:Y h:i:s", strtoTime(odbc_result($odbc_result,"dattime")));
odbc_fetch_row($odbc_result);
}
echo json_encode(array('c' => $device_cont, 'd_name' => $res_d_name, 'p' => $res_p, 't' => $res_t, 'q' => $res_q, 'dattime' => $res_dattime));
} else {
echo "\n - table isn't readed"; }
?>
- в логах "error: SyntaxError: Синтаксическая ошибка"
- в network есть запись о запросе, но получено 0 B
Проблема в том, что данный SELECT был отлажен в MS SQL Server Manadement Studio. И там он отлично работает. Но при копировании запроса в php, результатом становится "синтаксическая ошибка" (результат не меняется, если вместо переменных вставляю явные значения). Как я понимаю, для php чего-то в этом запросе не хватает. Синтаксис php проверялся неоднократно - вместо переменных вставлял обычные значения, все двойные/одинарные кавычки, скобки, точки с запятой - все, вроде бы, на месте, но...
p.s. Не знаю поможет ли эта история, но вот работающий запрос (собственно его и переделываю):
PHP:
$db_query = "SELECT [Id]
,[ID_TEC]
,[dattime]
,[p]
,[t]
,[q]
,[tabl]
FROM [GF].[dbo].[gftec]
where [ID_tec]=".$id_tec." and [Id] in (select max(id) from [GF].[dbo].[gftec]
where [ID_TEC]=".$id_tec."
group by [tabl])";


0