#php #sqlite
#php #sqlite
Вопрос:
Sqlite предоставляет результат правильно, но когда я использую код на PHP, он выдает предупреждение, что SQLite3::query()
: Не удается подготовить инструкцию.
это предупреждение связано с использованием OVER(ORDER BY)
команды. если я удалю это, php отобразит результат, но когда я использую OVER, это выдает ошибку. и я не получаю ни малейшего представления о том, как это исправить.
$sql="SELECT trandate, type, particulars, custid, custname, debit, credit,
SUM(CASE WHEN trandate = '$opdate'
THEN $totop debit
ELSE debit-credit
END)
OVER(ORDER BY date(substr(trandate, 7, 4)
|| '-' || substr(trandate, 4, 2)
|| '-' || substr(trandate, 1, 2)
) ASC
) AS balance, notes
FROM inboundtrans
WHERE custid ='$customer' and type!='$type'
ORDER BY datetime(substr(trandate, 7, 4)
|| '-' || substr(trandate, 4, 2)
|| '-' || substr(trandate, 1, 2)) ASC";
$query = $con->query($sql);
while ($row = $query->fetchArray(SQLITE3_ASSOC)) {
echo "
<tr>
<td>{$row['trandate']}</td>
<td>{$row['type']}</td>
<td>{$row['particulars']}</td>
<td>{$row['debit']}</td>
<td>{$row['credit']}</td>
<td>{$row['balance']}</td>
<td>{$row['notes']}</td>
</tr>n";
}
Отображается ошибка
Предупреждение: SQLite3::query(): Не удается подготовить инструкцию: 1, рядом с «(«: синтаксическая ошибка в C:My ThemesstorelitewwwledView.php в строке 188
Неустранимая ошибка: неперехваченная ошибка: Вызов функции-члена fetchArray() при boolean в C:My Темы storelite www LEDview.php:190 Трассировка стека: #0 {main} добавлено C:My ThemesstorelitewwwledView.php в строке 190
Комментарии:
1. Используете ли вы Sqlite 3.25 или новее? Все, что было до этой версии, не понимало оконных функций.
2. Я использую SQLite версии 3.27.2
3. Тогда либо она была собрана без поддержки оконных функций (возможно, но маловероятно), либо возникла какая-то другая проблема. Вы пропустили фактическое сообщение об ошибке и не отформатировали свой post… сделайте это так, чтобы его можно было прочитать, и кто-нибудь может обнаружить проблему.
4. конечно, я отредактирую вопрос
5. Да, это ошибка, которую вы получаете из старых версий sqlite. Вы абсолютно уверены, что ваша установка php использует ту версию, о которой вы думаете? Вы проверили версию из php с помощью
SQLite3::version()
?