質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1134閲覧

AUTO_INCREAMENTがよくわかりません

YutaEvol

総合スコア15

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/03/21 14:44

phpここに言語を入力

1 2 3 4<?php 5 6 7 8// MySQL接続情報 9$host = 'localhost'; // データベースのホスト名又はIPアドレス 10$user = 'username'; // MySQLのユーザ名 11$passwd = 'passwd'; // MySQLのパスワード 12$dbname = 'dbname'; // データベース名 13 14$customer_id = 1; // 例題のため顧客は1に固定 15$payment = 'クレジット'; // 例題のため購入方法はクレジットに固定する 16$quantity = 1; // 例題のため数量は1に固定 17$goods_list = array(); 18$err_msg = array(); 19 20// コネクション取得 21if ($link = mysqli_connect($host, $user, $passwd, $dbname)) { 22 23 // 文字コードセット 24 mysqli_set_charset($link, 'UTF8'); 25 26 // 購入処理 27 if( $_SERVER['REQUEST_METHOD'] === 'POST' ) { 28 29 // 現在時刻を取得 30 $date = date('Y-m-d H:i:s'); 31 32 // 商品IDを取得 33 $goods_id = (int) $_POST['goods_id']; 34 35 // 更新系の処理を行う前にトランザクション開始(オートコミットをオフ) 36 mysqli_autocommit($link, false); 37 38 /** 39 * 発注情報を挿入 40 */ 41 42 // 挿入情報をまとめる 43 $data = array( 44 'customer_id' => $customer_id, 45 'order_date' => $date, 46 'payment' => $payment 47 ); 48 49 // insertのSQL 50 $sql = 'INSERT INTO order_table (customer_id, order_date, payment) VALUES(\'' . implode('\',\'', $data) . '\')'; 51 52 // insertを実行する 53 if (mysqli_query($link, $sql) === TRUE) { 54 55 // A_Iを取得 56 $order_id = ### mysqli_insert_id($link); 57 58 /** 59 * 発注詳細情報を挿入 60 */ 61 62 // 挿入情報をまとめる 63 $data = array( 64 'order_id' => $order_id, 65 'goods_id' => $goods_id, 66 'quantity' => $quantity 67 ); 68 69 // 注文詳細情報をinsertする 70 $sql = 'INSERT INTO order_detail_table (order_id, goods_id, quantity) VALUES(\'' . implode('\',\'', $data) . '\')'; 71 72 // insertを実行する 73 if (mysqli_query($link, $sql) !== TRUE) { 74 $err_msg[] = 'order_detail_table: insertエラー:' . $sql; 75 } 76 77 } else { 78 $err_msg[] = 'order_table: insertエラー:' . $sql; 79 } 80 81 // トランザクション成否判定 82 if (count($err_msg) === 0) { 83 // 処理確定 84 mysqli_commit($link); 85 } else { 86 // 処理取消 87 mysqli_rollback($link); 88 } 89 90 } 91 92 /** 93 * 商品情報を取得 94 */ 95 96 // SQL 97 $sql = 'SELECT goods_id, goods_name, price FROM goods_table'; 98 99 // クエリ実行 100 if ($result = mysqli_query($link, $sql)) { 101 102 $i = 0; 103 while ($row = mysqli_fetch_assoc($result)) { 104 $goods_list[$i]['goods_id'] = htmlspecialchars($row['goods_id'], ENT_QUOTES, 'UTF-8'); 105 $goods_list[$i]['goods_name'] = htmlspecialchars($row['goods_name'], ENT_QUOTES, 'UTF-8'); 106 $goods_list[$i]['price'] = htmlspecialchars($row['price'], ENT_QUOTES, 'UTF-8'); 107 $i++; 108 } 109 110 111 } else { 112 $err_msg[] = 'SQL失敗:' . $sql; 113 } 114 115 mysqli_free_result($result); 116 mysqli_close($link); 117 118} else { 119 $err_msg[] = 'error: ' . mysqli_connect_error(); 120} 121 122//var_dump($err_msg); // エラーの確認が必要ならばコメントを外す 123 124?> 125 126<!DOCTYPE HTML> 127<html lang="ja"> 128<head> 129 <meta charset="UTF-8"> 130 <title>トランザクションサンプル</title> 131</head> 132<body> 133 <section> 134 <h1>商品購入</h1> 135 <ul> 136<?php foreach ($goods_list as $goods) { ?> 137 <li> 138 <span><?php print $goods['goods_name']; ?></span> 139 <span><?php print $goods['price']; ?></span> 140 141 <form method="post"> 142 <input type="hidden" name="goods_id" value="<?php print $goods['goods_id']; ?>"> 143 <input type="submit" value="購入する"> 144 </form> 145 </li> 146<?php } ?> 147 </ul> 148 <p>※サンプルのため購入は1商品 & 1個に固定</p> 149 </section> 150</body> 151</html> 152```コード 153 154質問 155//A_Iを取得のところでmysqli_insert_id($link)の意味が直近のidを取得ということだと思うのですが具体的にどういうことかいまいち理解できません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

javahack

2020/03/21 17:37

質問がAUTO INCREMENTnに関することならPHPではなくデータベース寄りの問題なのでタグに「MySQL」や「データベース」等を追加された方が良いのでは。
guest

回答2

0

各種ドキュメントを確認しましょう。

PHPマニュアル:mysqli_insert_id

mysqli::$insert_id -- mysqli_insert_id — 直近のクエリで使用した自動生成の ID を返す

MySQL 5.6 リファレンスマニュアル; AUTO_INCREMENT の使用

AUTO_INCREMENT 属性を使用すると、新しい行に一意の識別子を生成できます

AUTO・・・自動
INCREMENT・・・増加

です。

ちなみにプログラミングでもインクリメントの演算子はあります。
PHPマニュアル:加算子/減算子

それをMySQLの機能で自動で行うからAUTO_INCREMENTなわけです。

投稿2020/03/22 01:05

編集2020/03/22 01:07
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YutaEvol

2020/03/23 09:16

ありがとうございました
guest

0

ベストアンサー

例えば
IDのところに A_I(AUTO_INCREAMENT)をやってやると
1.2.3.4.5.6.7.って入力しなくても勝手に入力してくれる

ID  name  tel
1.  hage  117117
2.  hpge  114514
3.  papa  1919
4.  mama  810931

てかんじ

投稿2020/03/21 14:50

kuloda26

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YutaEvol

2020/03/23 09:16

ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問