PHP - Использование STRTOTIME в CASE STATEMENT для двух столбцов в БД - PullRequest
0 голосов
/ 10 декабря 2018

Как следует из заголовка, я хочу использовать strtotime для двух столбцов даты в базе данных в операторе CASE.

ОБНОВЛЕНИЕ

Это полный код php.

<?php
$conn=mysqli_connect("localhost","root","nature526","thebase");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}


$result = mysqli_query($conn,  "SELECT * FROM thetable ORDER BY curdate, case 

when mainissue = 'No Water Flow/Low Pressure' AND ((Previous - Recent) / Recent) * 100 >= 120 then 1
when mainissue = 'Leakage' AND address = 'Torko St. San Jose, Antique' AND ((Previous - Recent) / Recent) * 100 > 110 then 2
when mainissue = 'High Meter Readings' then 3
else 4
end asc");


echo " <center> <table border='1'>

<tr>

<th>Full Name</th>
<th>Address</th>
<th>Account Number</th>
<th>Box Number</th>
<th>Designated date for Repairs</th>
<th>Issue</th>
<th>Additional Information</th>
<th>Date Difference</th>


</tr>";


while ($row = mysqli_fetch_array($result))
{


echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['address'] . "</td>";
echo "<td>" . $row['actnum'] . "</td>";
echo "<td>" . $row['boxnum'] . "</td>";
echo "<td>" . $row['reqdate'] . "</td>";
echo "<td>" . $row['mainissue'] . "</td>";
echo "<td>" . $row['textarea'] . "</td>";
echo "<td>" . (strtotime($row['curdate']) - (strtotime($row['recentdate']))) / 86400 . "</td>";


echo "</tr>";
}
echo "</table>";

mysqli_close($conn);

Итак, приведенный выше код работает, но я хочу включить двастолбцы даты recentdate и curdate.Но меня беспокоит, где я должен использовать strtotime в запросе.Это работает, когда я использую его, чтобы повторить строку.echo "<td>" . (strtotime($row['curdate']) - (strtotime($row['recentdate']))) / 86400 . "</td>";.Эта формула работает и выводит разницу между столбцами даты.December 10, 2018 и December 12, 2018 выведут в таблицу 2.Теперь, как strtotime будет работать в операторе CASE, чтобы я мог расставить приоритеты по наибольшей разнице?

Теоретически это должно выглядеть так:

$result = mysqli_query($conn,  "SELECT * FROM thetable ORDER BY curdate, case 
when mainissue = 'No Water Flow/Low Pressure' AND  ((Previous - Recent) / Recent) * 100 >= 130  AND strotime(curdate - recentdate) / 86400 >= 1 then 1
when mainissue = 'No Water Flow/Low Pressure' AND ((Previous - Recent) / Recent) * 100 >= 120 then 2
when mainissue = 'Leakage' AND address = 'Torko St. San Jose, Antique' AND ((Previous - Recent) / Recent) * 100 > 110 then 3
when mainissue = 'High Meter Readings' then 4
else 5
end asc");

ОБНОВЛЕНИЕ

И размещение DATEDIFF() вместо strtotime также не сработает, потому что это дает мне mysqli_fetch_array () ожидает, что параметр 1 будет mysqli_result, логическое значение ошибка

...