Переменная внутри запроса и синтаксис UNION ALL - PullRequest
0 голосов
/ 29 июня 2018

Ниже приведен запрос для поиска общего количества билетов человека. fWork - это идентификатор этого человека. Каков наилучший способ поместить переменную в условие?

Должен ли я объявить что-то вроде $ID = $_GET['ID'];, и оно становится fWork = $ID

или fWork = ? и укажите $_GET[ID] в параметре, подобном этому array($_GET['ID'])

$open_count = " SELECT * FROM TicketO  WHERE Assigned = 0 AND fWork = 983";
$query = sqlsrv_query($NEI,$open_count,  array(), array( "Scrollable" => 'buffered' ));
$open_tickets_count = sqlsrv_num_rows($query);
echo " open tickets: " .  $open_tickets_count;

Кроме того, у меня возникают проблемы с включением в запрос UNION ALL, не хватает ли скобок? Возвращает ложь.

$total_count = "SELECT * FROM TicketO WHERE fWork = '983' 
                UNION ALL 
                SELECT * FROM TicketD WHERE fWork = '983'";

1 Ответ

0 голосов
/ 29 июня 2018

Сначала я рекомендую вам подтвердить, что идентификатор приходит в запросе

$fWork = '';
if(isset($_GET['ID']))
    $fWork = $_GET['ID'];

 $total_count = "SELECT * FROM TicketO as O WHERE O.fWork = '".$fWork."' 
                 UNION ALL 
                 SELECT * FROM TicketD as D WHERE D.fWork = '".$fWork."'";

Я не могу сказать, почему UNION ALL не работает, мне нужно просмотреть структуру таблиц для этого, но помнит, что в UNION ALL вы должны возвращать одинаковое количество столбцов, и они должны иметь одинаковые данные тип

...