忍者ブログ

からすまる日誌

2020032601

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2020032601

1限目遅刻
井上先生
 


さて昨日のエラーからやりますか。
 
Warning: Use of undefined constant stmt2 - assumed 'stmt2' (this will throw an Error in a future version of PHP) in C:\xampp\htdocs\php\makino\alert\alert_lines.php on line 91
stmt2
未定義の定数stmt2の使用?
→$stmt2の$が抜けてた。
 

print_r($stmt2);
 
出力結果
  
PDOStatement Object ( [queryString] => SELECT timezone_name FROM timezones WHERE timezone_id=25 or timezone_id=26 )
 
うん、$stmt2をprint_rしても意味がないんだな。
 

じゃあこれなら
 
$sql2 = "SELECT timezone_name FROM timezones WHERE timezone_id=25 or timezone_id=26";   
$stmt2 =$pdo->prepare($sql2);    
$stmt2 ->execute();
       
//print_r($stmt2);
$row2 = $stmt2 ->fetch(PDO::FETCH_ASSOC);  
print_r($row2); 
 
出力結果
 
Array ( [timezone_name] => Pacific/Honolulu ) 
 
1つしかきてない。
 

これなら
 
$row2 = $stmt2 ->fetchAll(PDO::FETCH_ASSOC);
print_r($row2);
 
出力結果
 
Array ( [0] => Array ( [timezone_name] => Pacific/Honolulu ) [1] => Array ( [timezone_name] => America/Anchorage ) )
 
よし、配列で来た。
 

これを欲しい内容にすればよい
 
<?php print_r($_SESSION) ?>
  
で来ている内容の
 [u_timezone] => 56
 [u_timezone_name] => Europe/London
これかな?
 
ちがう。ここでu_timezone_nameは得られてる
ほしいのはalertのtz_nameのはず。
 
<?php print_r($row); ?>
この内容が、
  Array
(
    [u_name] => kozaki
    [u_icon] => 3
    [alert_comment] => シドニー 会議      
    [alert_kind] => 1
    [alert_level] => 2
    [alert_time] => 2020-06-01 01:01:00
    [create_time] => 2020-03-25 14:35:01
    [u_timezone] => 56
    [alert_timezone] => 110
) 
 
この下二つが欲しいのでは。
まあ[u_timezone]はsessionでもきているけど。
一応やってみますか。せっかくのorだし
 

       $alert_timezone = $row["alert_timezone"];//アラートのタイムゾーン名が欲しい
       $user_timezone = $row["u_timezone"];//ユーザのタイムゾーン名が欲しい
       
       //$sql2 = "SELECT timezone_name FROM timezones WHERE timezone_id=25 or timezone_id=26";
       $sql2 = "SELECT timezone_name FROM timezones WHERE timezone_id = $alert_timezone or timezone_id = $user_timezone";
 
出力結果
 
Array ( [0] => Array ( [timezone_name] => Europe/London ) [1] => Array ( [timezone_name] => Africa/Nairobi ) )
 
よし。
 

いまprint_r($row2);が
 
Array ( [0] => Array ( [timezone_name] => Europe/London ) [1] => Array ( [timezone_name] => Africa/Nairobi ) )
 
試行錯誤の結果やっとほしい値が取り出せた。
この場合こう記述する
print_r( $row2[0]['timezone_name']);
 
出力結果
 
Europe/London
 
シングルコートでキー名を囲うのがコツ 
 

これ逆に出てくるね?
[0]がユーザタイムゾーンで
[1]がアラートタイムゾーンのようだ
要確認
なぜ逆に出たんだろう
いつも逆に出る確実性はあるだろうか
要確認
 

いまのところこうなっている 
 
<!-- alertとuserのtimezone_nameを取得-->
      
      <?php
       $alert_timezone = $row["alert_timezone"];//アラートのタイムゾーン名が欲しい
       $user_timezone = $row["u_timezone"];//ユーザのタイムゾーン名が欲しい
       
       //$sql2 = "SELECT timezone_name FROM timezones WHERE timezone_id=25 or timezone_id=26";
       $sql2 = "SELECT timezone_name FROM timezones WHERE timezone_id = $alert_timezone or timezone_id = $user_timezone";
       $stmt2 =$pdo->prepare($sql2);
       $stmt2 ->execute();
       
       //print_r($stmt2);
       
       $row2 = $stmt2 ->fetchAll(PDO::FETCH_ASSOC);
       //print_r($row2);
       //print_r( $row2[0]['timezone_name']);
       //print_r( $row2[1]['timezone_name']);
       
       $alert_timezone_name = $row2[1]['timezone_name'];
       $user_timezone = $row2[0]['timezone_name'];
       
      ?>
 
別々に出力したほうが確実だろうか?
 
PR

コメント

ブログ内検索

カレンダー

03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30