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'];
?>
別々に出力したほうが確実だろうか?