У меня есть PHP-скрипт, который печатает числа в диапазоне от 2 до указанного конца, используя подготовленный оператор SQLite с предложением WITH
.Когда я запускаю его, программа никогда не завершается и выводит также числа после 5 (указано в качестве параметра).Когда я запускаю аналогичную программу, у которой фиксированный конец (постоянный в коде SQL) вместо подготовленного оператора выводит ожидаемые числа.
<?php
// Version with prepared statement
$db = new PDO("sqlite::memory:");
$s = $db->prepare("WITH RECURSIVE range(i) AS (
SELECT 2
UNION
SELECT i + 1 FROM range WHERE i < :to
) select * from range
");
$s->execute(array(":to" => 5));
foreach ($s as $value)
echo $value[0] . "\n";
<?php
// Version with constant -- working
$db = new PDO("sqlite::memory:");
$s = $db->prepare("WITH RECURSIVE range(i) AS (
SELECT 2
UNION
SELECT i + 1 FROM range WHERE i < 5
) select * from range
");
$s->execute(array());
foreach ($s as $value)
echo $value[0] . "\n";