Rumah > Soal Jawab > teks badan
Saya sedang mencari penyelesaian pintar untuk memproses beberapa data JSON daripada pangkalan data postgresql menggunakan Javascript. Saya tahu saya perlu membaca pangkalan data melalui php dan lulus data sebagai tatasusunan kepada Javascript.
Biasanya anda akan melakukan sesuatu seperti ini:
<?php $phpArray = array('apple', 'banana', 'orange'); $jsonString = json_encode($phpArray); ?> <script> var jsonString = '<?php echo $jsonString ?>'; var jsArray = JSON.parse(jsonString); </script>
Tetapi data saya sudah disimpan dalam medan postgresql jsonb dalam format JSON. Jadi saya berharap ada cara untuk menghantar tatasusunan dengan lebih cekap supaya PC tidak perlu mengulang data yang sama dua kali.
root@monitor:~ $ sudo -u postgres psql postgres=# \c monitor monitor=# SELECT * FROM "drone001"; id | data ---+----------------------------------------------------------------------------------------------- 1 | {"RX": 13.7, "Speed": 10.1, "Azimuth": 897, "Heading": 125, "DateTime": "2023-03-19 04:14:49"} 2 | {"RX": 13.4, "Speed": 10.2, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:47"} 3 | {"RX": 13.3, "Speed": 10.1, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:45"} 4 | {"RX": 13.7, "Speed": 10.1, "Azimuth": 896, "Heading": 127, "DateTime": "2023-03-19 04:14:43"} 5 | {"RX": 13.1, "Speed": 10.1, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:41"} [...]
Kod ini tidak berfungsi tetapi harus menunjukkan secara kasar apa yang ada dalam fikiran saya.
<?php require_once 'pgsql.php'; $db = new database(); $res = $db->select('drone001'); $jsondata = array(); while ($ds = pg_fetch_object($res)) { $jsondata[] = $ds->data; } ?> <script type="text/javascript"> var jsArray = JSON.parse('<?php echo $jsondata ?>'); console.log(jsArray); </script>
Alangkah baiknya jika seseorang dapat menunjukkan saya ke arah yang betul.
P粉7448316022023-09-13 10:07:37
Baiklah, saya berasa agak bodoh hari ini. Saya dapati penyelesaiannya, tidak perlu mencipta tatasusunan baru, hanya menggabungkan semua rentetan bersama-sama.
<?php require_once 'pgsql.php'; $db = new database(); $res = $db->select('drone001'); while ($ds = pg_fetch_object($res)) { $jsondata .= $ds->data . ","; } $jsondata = "[" . rtrim($jsondata, ",") . "]"; ?> <script type="text/javascript"> var jsArray = JSON.parse('<?php echo $jsondata ?>'); console.log(jsArray); </script>