忍者ブログ

からすまる日誌 mySQL

授業ノートのまとめ

基本(12) 近畿6つを自動登録

×

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

基本(12) 近畿6つを自動登録

①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#]
[#IMAGE|a0396706_11363181.png|202001/31/06/|mid|1047|615#]

 

 

→やっぱり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#]
 
PR

コメント

ただいまコメントを受けつけておりません。

プロフィール

HN:
karasumaru
性別:
非公開

P R