①prefsテーブルをschoolに追加
カラムは以下の通り:
p_id(int/AI/primary)
pref(varcher/8)
[#IMAGE|a0396706_11361432.png|202001/31/06/|mid|864|613#]
[#IMAGE|a0396706_11362254.png|202001/31/06/|mid|1058|556#]
→やっぱりp_idのAIをやめる
修正して保存
②ソールフードも登録したい
foods table
f_id
food
p_id(どの県の食べ物なのか)
*p_idは連動させる
[#IMAGE|a0396706_11364967.png|202001/31/06/|mid|1058|557#]

③せっかくなのでプログラムからデータ登録しよう
新規にexec.php
execはエグゼキュートのexec
実行可能の意味がある
このページを開いただけで2府4県が自動的に登録されるようにしたい
配列でデータを持たせたい
--->exec.php
<?php
//ページを開くだけで6件を自動登録
$prefs=["","京都府","大阪府","兵庫県","滋賀県","奈良県","和歌山県"];//0番を空でスキップ
$user="root";//誰でパスでホストでDBネーム?
$pass="";
$host="localhost";
$dbname="school";
$dsn="mysql:host={$host};dbname={$dbname};charset=utf8";//データソース名。;で区切れ
$pdo= new PDO($dsn, $user, $pass);//pdoオブジェクト生成
$sql="INSERT INTO prefs(p_id,pref) VALUES (:p_id,:pref)";//プレイスホールダー
$stmt = $pdo->prepare($sql);//こんがり。
for($i=1;$i<=6;$i++){//0番は空になっているので$i=1から始める
//idをバインド
$stmt->bindValue(":p_id",$i,PDO::PARAM_INT);//$stmtにバインド。どこに、何の値を、文字または数字
//都道府県名をバインド
$stmt->bindValue(":pref",$prefs[$i],PDO::PARAM_STR);
$stmt->execute();
}
?>
今回もエラーの嵐だった。
①$dsn="mysql:host={$host};dbname={$dbname};charset=utf8";
の最後の"の閉じ忘れ
②$stmt = $pdo->prepare($sql);
のprepareのあとの記述がすかんと抜ける
③$dsn="mysql:host={$host};dbname={$dbname};charset=utf8";
この中身は;で区切るのをカンマになっていた
間違える理由はだいたい同じになってきたな。
閉じ忘れ、カンマと;の取り違え、記入もれだ。
作ったstmtは使いまわしができる(焼いたパンは何回も使える。トッピングだけ変えればよい)
ただこれが3000件とかあると、サーバーはまず落ちるらしい。
php.iniで、「連続何分処理をする最大値」が決まっていて、それを超えると落ちる。
どうしても必要なら作業時間の許容時間を自分でiniファイルを修正するということになる。
「ついでに数回」ぐらいならOKだが、100回を超えるのはこういうやり方は想定されていないらしい。
foods tableでこの方式はめんどいな
フードは「挿入」でいれていきますよ
[#IMAGE|a0396706_11385999.png|202001/31/06/|mid|1062|588#]