CREATE文でカラムだけ作成し、カラムがきちんと作成できたかをブラウザに表示したいと思いいろいろ調べた結果以下のコードだと、カラムの内容をブラウザに表示することができました。
書いて、ある程度予想通りに表示されましたが、なんとなくで書いているため、何故上手くいったのかよくわから②部分も多いです。初学者ですが、この先のことも考えて一つひとつ理解しながらコードを書いていきたいと考えているため、以下のコードについて何点か説明をお願いしたいです。できればあまり専門用語使わずに教えていただければ嬉しいです。
php
1<?php 2 3try{ 4 //DBへ接続 5 $pdo = new PDO('mysql:host=localhost;dbname=*****;charaset=utf8','****','****'); 6 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 7 echo "接続成功"; 8 echo "<br>"; 9 10}catch(PDOException $e){ 11 echo "接続失敗".$e->getMessage(); 12 echo "<br>"; 13 exit; 14} 15 16$sql = 17 "CREATE TABLE keijiban ( 18 number INT(11) AUTO_INCREMENT PRIMARY KEY, 19 name VARCHAR(20), 20 message VARCHAR(100), 21 regi_date TIMESTAMP 22 )ENGINE=InnoDB DEFAULT CHARSET=utf8"; 23 24foreach ($pdo->query('show tables') as $row) { 25 printf('%s<br>', $row[0]); 26 echo "<ul>"; 27} 28 29foreach ($pdo->query('show columns from ' . $row[0]) as $row) { 30 printf('<li>%s:%s</li>', $row['Field'], $row['Type']); 31} 32 33 34//接続を閉じる 35$pdo = null; 36 37?>
【質問】
php
1foreach ($pdo->query('show tables') as $row) { 2 printf('%s<br>', $row[0]); 3 echo "<ul>"; 4}
この部分ですが、何故foreach文で「$pdo->query('show tables')」が使えているのか分かりません。**配列として扱われているものなんでしょうか?**また、printf関数も調べてもよくわかりません。sprintf関数が何故か出てきてしまいます。printf関数とはなんですか?
php
1foreach ($pdo->query('show columns from ' . $row[0]) as $row) { 2 printf('<li>%s:%s</li>', $row['Field'], $row['Type']); 3}
「$row['Field'], $row['Type']」の部分にあるように、$rowは配列だと思うのですが、何故[]の中に数字ではなく文字が入っているのでしょう?
【連想配列】
phpからMySQLにアクセスするためのサイトをよくみるのですが、だいたいみなさん連想配列を使ってらっしゃいます。ただ、私は「いつ連想配列つくったの?」となってしまいます。ふつうだったら、
php
1$fruits = array("apple" => "リンゴ", "orange" => "ミカン", "lemon" => "レモン"); 2$value1 = $fruits["apple"];
こんな感じで"apple"に"リンゴ"を入れますよーという宣言をすると思うのですが、私が見たサイト「例)https://noumenon-th.net/programming/2016/01/19/mysql/」はこのサイトさん以外でもそうですが、いつ$row['id']とか$row['name']をいつ設定したの・・・?と思ってしまいます。。。。
【printf関数】
phpマニュアルを読みましたが、「%」の意味が分かりません
「% 文字通り、パーセント文字です。 引数は不要です。 」とかかれていましたが、
実際に動かしたコードの中で「printf("%%b = '%b'\n", $n); 」のところは実行すると
「%b = '10100111101010011010101101'」となっていました。これをみても、%の働きがよくわかりません。演算子の余りを求めてくれる働きの%とは違い気もしますし...。何故ないとだめなのでしょうか・・・?
phpマニュアル:https://www.php.net/manual/ja/function.printf.php
回答5件
あなたの回答
tips
プレビュー