Я запрашиваю базу данных наблюдений за дикой природой, чтобы отобразить первое обнаружение Dingy_Skipper на основе строки запроса 'yr' AS Dingy_Skipper_FDate. Я также хотел бы отобразить последние / последние наблюдения из той же строки запроса 'yr' AS Dingy_Skipper_LDate
Полагаю, мне нужно использовать UNION, но я пробовал несколько раз и не могу заставить его работать. Я никогда не использовал UNION раньше, поэтому любая помощь приветствуется. Большое спасибо заранее!
Я пробовал следующий запрос, но он выдает ошибку в строке $ Dingy_Skipper1 = $ sp1-> query ($ Dingy_Skipper);.
<?php
// connect
$sp1 = dbConnect('read', 'pdo');
// prepare query
$theyear = $_GET['yr'];
$Dingy_Skipper = "
SELECT rDate AS Dingy_Skipper_FDate, Dingy_Skipper
FROM wbcrecords
WHERE YEAR(rDate) = '$theyear' AND Dingy_Skipper >='1' ORDER BY rDate ASC Limit 1
UNION
SELECT rDate AS Dingy_Skipper_LDate, Dingy_Skipper
FROM wbcrecords
WHERE YEAR(rDate) = '$theyear' AND Dingy_Skipper >='1' ORDER BY rDate DESC Limit 1";
// submit query capture result
$Dingy_Skipper1 = $sp1->query($Dingy_Skipper);
// free database
$Dingy_Skipper1->closeCursor();
?>
Я обновил запрос (см. Ниже), который теперь работает правильно, и я предполагаю, что он защитит от внедрения SQL? Тем не менее, что было бы наиболее эффективным способом выбора первой и последней даты из второго столбца в той же таблице, называемой Grizzled_Skipper, поэтому у меня есть первая и последняя даты как $ Grizzled_Skipper_FDate и $ Grizzled_Skipper_LDate для столбца Grizzled_Skipper, а также $ Dingy_Skipper_FDate и $ Dingy_Skipper_LDate для столбца Dingy_Skipper?
<?php
if (isset($_GET['yr'])) {
require_once('inc/connection.php');
$conn = dbConnect('read', 'pdo');
$sql = 'SELECT MIN(rDate) AS Dingy_Skipper_FDate, MAX(rDate) AS Dingy_Skipper_LDate, Dingy_Skipper
FROM wbcrecords
WHERE YEAR(rDate) = :yr AND Dingy_Skipper >="1"';
$searchterm = $_GET['yr'];
$Species = $conn->prepare($sql);
$Species->bindParam(':yr', $searchterm, PDO::PARAM_STR);
$Species->bindColumn(1, $Dingy_Skipper_FDate);
$Species->bindColumn(2, $Dingy_Skipper_LDate);
$Species->bindColumn(3, $Dingy_Skipper);
$Species->execute();
$numRows = $Species->rowCount();
}
?>