実現したいこと
phpプログラム間で sessionモードを使用して Sqlite データを引き渡したい。
発生している問題・分からないこと
① A.php で Sqlte データを $@@@ に格納する。
② その後、下記プログラムにて $_SESSION にデータを引き渡す。
$_SESSION[''] = $@@@;
③ 引渡し先の B.php で下記プログラムにてデーターを読込みたい。
$result =$_SESSION[''] ;
該当のソースコード
php
1A.php 2 3<?php 4session_start(); 5 6 // db定義 ********************************** 7 $file_db = '/home/patoDB.db'; 8 9 // dbに接続 ******************************** 10 function connect_db(){ 11 global $file_db; 12 $db = new SQLite3($file_db); 13 return $db; 14 } 15 //****************************************** 16 17$db = connect_db(); 18//$s_data1 = "1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0i,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0"; 19//$s_data2 = "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"; 20 21$sql = "select * from p_data_today where mid='130' limit 1;"; //先ずは1行だけ指定して確認 22$s_data3 = $db->query($sql); 23 24$_SESSION['today_table'] =$s_data3; 25 // for debug ******************************************* 26 //print "s_data: "; 27 // while ($row = $_SESSION['today_table']->fetchArray()) { 28 // var_dump($row); 29 // print '<br>'; 30 // } 31 //print '<br>'; 32 //****************************************************** 33 // $s_data3 の表示内容 34 //s_data: array(18) { [0]=> int(38120) ["id"]=> int(38120) [1]=> string(19) "2024-06-24 00:00:43" ["datetime"]=> string(19) "2024-06-24 00:00:43" [2]=> string(19) "2024-06-24 00:00:47" ["new_dd"]=> string(19) "2024-06-24 00:00:47" [3]=> int(4) ["time_dif"]=> int(4) [4]=> string(3) "OFF" ["RED_LED"]=> string(3) "OFF" [5]=> string(3) "OFF" ["ORENGE_LED"]=> string(3) "OFF" [6]=> string(3) "OFF" ["GREEN_LED"]=> string(3) "OFF" [7]=> string(3) "130" ["mid"]=> string(3) "130" [8]=> string(13) "192.168.0.130" ["ip"]=> string(13) "192.168.0.130" } 35?> 36・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 37 38B.php 39 40<?php 41session_start(); 42 43$result = array(); 44$result = $_SESSION['today_table']; 45echo "memory: "memory_get_usage() . "\n"."<br>"; // メモリ不足か確認用 46echo "result_1: ".$result."<br>"; 47 48 // for debug ******************************************* 49 print "result_2: "; 50 while ($row = $result->fetchArray()) { 51 var_dump($row); 52 print '<br>'; 53 } 54 print '<br>'; 55 //****************************************************** 56?>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ブラウザ表示は以下のようになり、$s_data3 の sqliteデータは引き継がれていない模様
memory: 350280
result_1:
result_2:
ちなみに、$_SESSION['today_table'] =$s_data3; を $s_data1 及び $s_data2
に置き換えた場合は以下のようになるのでデータは引き継がれている模様
$s_data1 の場合
memory: 350280
result_1:1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0i,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0
result_2:
$s_data2 の場合
memory: 350280
result_1:1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
result_2:
sqlite データを引き継がせるにはどうしたらいいか知りたい
補足
開発環境: pi4-4GB,OS:raspbian, apache2, php7.4, Sqlite3(Node-REDにてDB集積)
PC(windows10 home)上の Chrome にて表示確認
result1: , で区切られた場合のデータ確認用。
result2: 区切りが無い場合のデータ確認用 もう少し長くなると vim がぶっ飛んでしまうのでこのくらいの長さにした。
以上。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/06/24 06:54
2024/06/25 00:41 編集
2024/06/25 02:10
2024/06/25 02:25
2024/06/25 03:06
2024/06/25 03:22 編集
2024/06/25 04:13
2024/06/25 06:06
2024/06/25 07:53
2024/06/25 08:52
2024/06/26 00:51
2024/06/26 01:00
2024/06/26 01:13
2024/06/26 01:16
2024/06/26 01:38
2024/06/26 16:25
2024/06/27 04:43