저는 PHP와 특히 PDO에 새로운 (ish)입니다. 왜 누군가 JSON_encode에 빈 배열을 반환하는지 이해할 수 있습니까?PHP SQLite PDO가 빈 json 배열을 반환합니다.
SQL 쿼리가 제대로 실행되어 결과를 반환합니다. PDO를 통해이 다단계 질의를 통과하면 기대했던 것만 얻지 못합니다. 나는 비슷한 질문을 쳐다 보았고 많은 통찰력없이 PHP 문서와 조화를 이루려고했다.
PDO를 통해 SQLite로 다단계 (다소 복잡한) 쿼리를 제출하고 결과를 json_encode()
으로 전달하는 올바른 방법은 무엇입니까? 모든 포인터가 많이 감사합니다.
업데이트 : @Darren, @Phill, @Mike의 유용한 의견으로 코드 예제를 업데이트/정리했습니다.
$ dbh = new PDO ('sqlite : livedb2.sqlite'); 나는이 아직도 단지 $q4
쿼리 문이 아닌 결과를 인쇄하는 것 같은 쿼리를 분할하는 경우
$sth = $dbh->prepare('
CREATE TEMPORARY TABLE TMPnodesA AS
SELECT Source, Location, COUNT(*) AS value
FROM [emergencydept(sankey)]
GROUP BY Source, Location
UNION
SELECT Location, Destination, COUNT(*) AS value
FROM [emergencydept(sankey)]
GROUP BY Location, Destination;
CREATE TEMPORARY TABLE TMPnodesB AS
SELECT Source, Location, value
FROM TMPnodesA
ORDER BY value DESC;
CREATE TEMPORARY TABLE TMPnodesC AS
SELECT Source AS name
FROM TMPnodesB
UNION
SELECT Location
FROM TMPnodesB;
CREATE TEMPORARY TABLE TMPnodesD AS
SELECT name
FROM TMPnodesC;
SELECT name, rowid-1 as id
FROM TMPnodesD;');
$sth->execute(); print_r($sth);
...
제출 PDO를 사용하는 올바른 방법을 무엇$dbh = new PDO('sqlite:livedb2.sqlite');
$q1=('
CREATE TEMPORARY TABLE TMPnodesA AS
SELECT Source, Location, COUNT(*) AS value
FROM [emergencydept(sankey)]
GROUP BY Source, Location
UNION
SELECT Location, Destination, COUNT(*) AS value
FROM [emergencydept(sankey)]
GROUP BY Location, Destination;
');
$q2=('
CREATE TEMPORARY TABLE TMPnodesB AS
SELECT Source, Location, value
FROM TMPnodesA
ORDER BY value DESC;
');
$q3=('
CREATE TEMPORARY TABLE TMPnodesC AS
SELECT Source AS name
FROM TMPnodesB
UNION
SELECT Location
FROM TMPnodesB;
');
$q4=('
CREATE TEMPORARY TABLE TMPnodesD AS
SELECT name
FROM TMPnodesC;
SELECT name, rowid-1 as id
FROM TMPnodesD;
');
$dbh->exec($q1);
$dbh->exec($q2);
$dbh->exec($q3);
echo json_encode($dbh->query($q4));
SQLite에 대한 다중 단계 (복합) 쿼리 및 결과를 json_encode에 전달?
그런 fetchAll()을 반복하지 않아도됩니다. 'print_r ($ sth-> fetchAll()); '은 무엇을 의미합니까? – Darren
'새로운 PDO (...) 또는 죽는 (...)'은 ** die ** 문에 도달하지 않으므로 그 일을 그만두십시오 – Phil
'print_r ($ sth-> fetchAll());' – Colin