2014-01-29 1 views
0

Я использую этот PHP код, чтобы выбрать один из 2-х таблиц в MySQL с помощью UNIONPHP Выберите из двух таблиц и эхо имени таблицы

$sql=" 
    SELECT 
    'ticket_updates' as rowTable, 
    sequence, 
    ticket_seq, 
    notes as displaydata, 
    datetime as timestamp, 
    updatedby, 
    CONCAT('<strong>Time Start: </strong>',timestart,' - <strong>Time End: </strong>',timeend) as timestartend 
    from ticket_updates where ticket_seq = '".$_GET["seq"]."' 

    UNION 

    SELECT 
    'ticket_changes' as rowTable, 
    sequence, 
    ticket_seq, 
    description as displaydata, 
    datetime as timestamp, 
    changed_by as updatedby, 
    blankfield 
    from ticket_changes where ticket_seq = '".$_GET["seq"]."' 

    ORDER by timestamp ASC "; 

$stmt = $pdo_conn->prepare($sql); 
$stmt->execute(array(':ticket_seq' => $_GET["seq"])); 
$records = $stmt->fetchAll(PDO::FETCH_ASSOC); 
$num_rows = count($records); 
foreach ($records as $result2) { 
    echo $result2["rowTable"]; 
} 

, но его не вторя либо ticket_updates или ticket_changes

я знаю, что есть строки, возвращаемые, потому что, когда я запускаю запрос в phpMyAdmin, он показывает строки и показывает либо ticket_updates, либо ticket_changes

+0

Пожалуйста, правильно отформатируйте свой код –

+3

Где находится ': ticket_seq' в вашем SQL? – Barmar

ответ

1

У вас не было никаких заполнителей в вашем SQL, чтобы они соответствовали параметру в y наш execute звонок. Попробуйте следующее:

$sql=" 
    SELECT 
    'ticket_updates' as rowTable, 
    sequence, 
    ticket_seq, 
    notes as displaydata, 
    datetime as timestamp, 
    updatedby, 
    CONCAT('<strong>Time Start: </strong>',timestart,' - <strong>Time End: </strong>',timeend) as timestartend 
    from ticket_updates where ticket_seq = :ticket_seq1 

    UNION 

    SELECT 
    'ticket_changes' as rowTable, 
    sequence, 
    ticket_seq, 
    description as displaydata, 
    datetime as timestamp, 
    changed_by as updatedby, 
    blankfield 
    from ticket_changes where ticket_seq = :ticket_seq2 

    ORDER by timestamp ASC "; 

$stmt = $pdo_conn->prepare($sql); 
$stmt->execute(array(':ticket_seq1' => $_GET["seq"], ':ticket_seq12' => $_GET["seq"])); 

Вам нужны два разных заполнителя, вы не можете использовать один и тот же дважды.

+0

Я пробовал это, но он все еще не показывает имя таблицы, когда i echo $ result2 ["rowTable"] – user2710234

+0

Что такое 'echo $ num_rows'? – Barmar

+0

, который показывает '18' – user2710234

Смежные вопросы