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
	            