PHPの勉強中です。
ネットを参考に勉強しているのですが、データ表示のところで疑問にあたりました。
複数行の場合はforeachで回して、データにはオブジェクト->カラム名でアクセスしますが、一行フェッチのときは、オブジェクト名[”カラム名”]でアクセスしなければ表示できませんでした。
表記が統一出来ればいいのにな。と思ったのですが、そんなものなのでしょうか?
ちなみに、こんなコードです。
index.php
1<?php 2 3define('DSN', 'mysql:host=127.0.0.1;dbname=drh;charset=utf8mb4'); 4define('DB_USER', 'root'); 5define('DB_PASS', 'a61CXdhaSCKt'); 6 7try { 8 $pdo = new PDO( 9 DSN, 10 DB_USER, 11 DB_PASS, 12 [ 13 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 14 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, 15 PDO::ATTR_EMULATE_PREPARES => false, 16 ] 17 ); 18} catch (PDOException $e) { 19 echo $e->getMessage(); 20 exit; 21} 22 23function h($str) 24{ 25 return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); 26} 27 28function getBundle($pdo) 29{ 30 $stmt = $pdo->query("select * from bundle"); 31 $bundle = $stmt->fetch(PDO::FETCH_ASSOC); 32 return $bundle; 33} 34 35$bundle = getBundle($pdo); 36 37?> 38<!DOCTYPE html> 39<html lang="ja"> 40<head> 41 <meta charset="UTF-8"> 42 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 43 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 44 <title>Tools</title> 45 <meta http-equiv="Content-Style-Type" content="text/css"> 46 <link rel="stylesheet" href="css/styles.css"> 47</head> 48<body> 49<div class="doc"> 50 <h1>2F 食堂</h1> 51 <ul> 52 <li><label for="2FA4">A4</label><input class="bundle" type="number" name="2FA4" value=<?= h($bundle["2FA4"]); ?>></li> 53 <li><label for="2FA3">A3</label><input class="bundle" type="number" name="2FA3" value=<?= h($bundle["2FA3"]); ?>></li> 54 <li><label for="2FB5">B5</label><input class="bundle" type="number" name="2FB5" value=<?= h($bundle["2FB5"]); ?>></li> 55 <li><label for="2FB4">B4</label><input class="bundle" type="number" name="2FB4" value=<?= h($bundle["2FB4"]); ?>></li> 56 </ul> 57 <h1>3F 会議室</h1> 58 <ul> 59 <li><label for="3FA4">A4</label><input class="bundle" type="number" name="3FA4" value=<?= h($bundle["3FA4"]); ?>></li> 60 <li><label for="3FA3">A3</label><input class="bundle" type="number" name="3FA3" value=<?= h($bundle["3FA3"]); ?>></li> 61 <li><label for="3FB5">B5</label><input class="bundle" type="number" name="3FB5" value=<?= h($bundle["3FB5"]); ?>></li> 62 <li><label for="3FB4">B4</label><input class="bundle" type="number" name="3FB4" value=<?= h($bundle["3FB4"]); ?>></li> 63 </ul> 64 <button id="done" class="done">Done</button> 65</div> 66</body> 67<script src="js/main.js"></script> 68</html>
>複数行の場合はforeachで回して、データにはオブジェクト->カラム名でアクセスしますが、
実際のコードを提示されたほうが良いと思います。
あくまでfetchにあたえる引数によってどういう形で格納するかが決まるだけの話です。
https://www.php.net/manual/ja/pdostatement.fetch.php
初心者のため、マニュアルを読むのも難しいです。
コードに書いている。$bundle["2FA4"]を$bundle->2FA4と書くために必要なfetchの引数は何にすれば良いのでしょうか?
初心者の最初の目標が「PHPマニュアルを参照できるようになること(読み方を覚えること)」です。
それだけで聞くまでもなく解決できるようになることが一気に増えますよ。時間かけてでも読んでいった方がいい(日本語ですし、説明は丁寧ですし、サンプルコードもあるし、何より公式なので正しい情報です)
回答2件