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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

417閲覧

フォームからの入力情報をSQLに登録するプログラムについて

yuupon

総合スコア2

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

2クリップ

投稿2022/06/05 14:53

「ちゃんと使える力を力を身につけるwebとプログラミングのきほんのきほん」という書籍で勉強中なのですが、329ページの、htmlで作ったフォームで入力され、送信された際に、その情報をSQLにINSERT文を発行して登録するphpプログラムでわからないことがあります。

イメージ説明

画像のオレンジの部分なのですが、VALUES(から後の部分は、「'」で登録内容をくくるだけではだめなのでしょうか?このサンプルプログラムで、「.」や、「"」がたくさん使われている意味が理解出来ません。
詳しい方、ご回答頂けますと幸いです。
宜しくお願い致します。

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

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

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

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

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

guest

回答3

0

PHPの文字列の変数展開、文字列の結合について確認してみてください。

参考)
https://eng-entrance.com/php-string-variable
http://www.dicre.com/php/php-stringembed

少なくともシングルコーテーションでくくるだけだと、変数展開はされないのでダメです。

あと、この本でもおそらくこの後に出てくると思いますが、これだとセキュリティ上の大問題があって、このようなソースコードを書くことは実際はありえませんので、まずはこのまま読み進めていいと思います。

投稿2022/06/05 15:17

編集2022/06/05 15:18
AbeTakashi

総合スコア4512

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

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

yuupon

2022/06/06 05:42

おっしゃる通り、この後のページでセキュリティに大問題があり、修正プログラムが書かれていました。この本で初めて勉強を始めたばかりなので、ご紹介頂いたサイトでもphpについてもっと勉強していきます。この度はご回答ありがとうございました。
guest

0

これは動作を理解するための簡易的なinsertなのでしょう
通常はprepareで処理するので任意にクォーテーションで囲む必要はありません

投稿2022/06/06 02:29

yambejp

総合スコア114779

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

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

yuupon

2022/06/06 05:57

ご回答頂きありがとうございます。 この本で初めてプログラミングを勉強し始めたばかりなので、prepare等もっと専門的なことも今後勉強していきたいと思います。
guest

0

ベストアンサー

例えば、

sql

1INSERT INTO address (username) VALUES 'ichiro';

という SQL 文を PHP で構成するには、

php

1$sql = "INSERT INTO address (username) VALUES '" . $_POST["username"] . "';";

のように、PHP変数と文字列リテラルを . 演算子で結合する必要があり、その前後には文字列リテラルの終了または開始を表す " 引用符が必要になります。SQL文の文字列として ' 引用符を使いたいことに注意して読んでみてください。

また、見やすくするために改行を加えれば、改行前後でも文字列リテラルを一旦区切るために、必要以上に ". を記述することになります。その結果がその書籍のような記述内容になるのです。

投稿2022/06/05 15:19

arcxor

総合スコア2859

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

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

yuupon

2022/06/06 05:38

非常にわかりやすく説明して頂き、この度はありがとうございました。 これからも頑張って勉強していきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問