- ベストアンサー
「INSERT INTO」文はどこに書かれている構
- 「INSERT INTO」文の構文がどこで書かれているのか知りたいです。
- addxmas.phpファイル中の(3)の箇所で「INSERT INTO」文が記述されています。
- この「INSERT INTO」文の構文は以下のようになります:INSERT INTO tbl_name (col_namel, col_name2, ...) VALUES (value1, value2, ...);
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
問題視した 項目(3):データベースのアクセス:登録処理 $sql = "insert into xmastran values('$book_id','$name','$org','$addr','$tel', '$mail','$course','$number')"; の説明中の「INSERT INTO」文のINSERT INTO tbl_name (col_namel, col_name2, ...)VALUES (value1, value2, ...);構文 ------------------------------------------------------------------------ えっと、質問文によれば、$sql=から始まる行って、addxmas.phpに書かれている行ですよね。ちゃんと、ここだよと、(3)の注釈まで打ってありますし・・・ で、説明文が、ここの説明であることは解っているんですよね。 なのに、INSERT INTO文がどこにあるか解らない?????? とすれば、多分、php以前というか・・・説明文の読み方が間違っていますとしか言いようがないのですが・・・ えっとですね。 INSERT INTO文は、次のように書きます。 INSERT INTO tbl_name (col_name1, col_name2, ...)VALUES (value1, value2, ...); という書き方をした時、大文字で書いてある部分は、そのまま書く部分です。でもね、小文字で書いてあるところは、全部、その時々の状況に応じて変わる部分です。 tbl_nameと書いてあるところには、その時、insert into文で登録する宛先のテーブル名を書きます。 col_name?と書いてあるところには、insert into文で登録したいフィールドの名前を書きます。 value?と書いてあるところには、insert into文で登録する値を書きます。 今の文で、まかり間違っても、「「col_name?」なんて、どこに書いてあった?」と聞かないでくださいね。「?」の部分には1・2の数字が入ります。「馬鹿にしているのか?」と思われましたか?いえ。あなたの質問が、これと同じ勘違いをしているのが、そもそものスタートなんです。 プログラムで書く、命令文は、一般的に、3つの要素からなります。 ひとつは、キーワードです。この場合でしたら、INSERT INTOとか、VALUESがそれに当たります。これは、このまんま書くものです。 ひとつは、変数や関数などの名前です。これは、そのプログラムで定義したもので、名前そのものはある程度自由につけることが出来ますが、一度命名したら、その名前の通り書かないといけません。 もう一つは、リテラルといわれるものです。これは、数字や文字列を書く時に使います。3と書いて数字の3そのものを表現したいとか、"登録成功"と書いて、登録成功という文字そのものをプログラムに指定する時に使います。 変数や関数の名前・リテラルと言ったものは、プログラムによって必ず変わります。ある命令の構文の説明をする時に、ころころ変わる物をどうやって表示するかのひとつの手段が、先の文なんです。table_nameとか、col_nameのところには、名前が入りますが、一般的には、何が入るかは解りません。解らないから、table_nameという仮の名前をつけて、これはテーブル名を書くところだよと言っているわけです。 例えば、日本語で自分の名前を相手に伝える文の「構文」を説明しようとしたとしましょう。 「私は、●●と言います。」 この●●には、自分の名前が入るんだと言うことは解りますよね?そして、この構文を学んだ人は、「私は、●●と言います。」とは決して言いませんよね? それと全く同じ事です。●●だの○○だのやっていたら、ちょっと複雑な構文になると何を言っているのか解らなくなるので、英単語で名前をつけて、●●の代わりに使ってみて・・・ 「私は、nameと言います。」 と書いてみた。それだけのことなんです。●●だと何でも入りそうですが、nameなら、あぁ、名前が入るんだなと、解るので理解しやすいですよね。 これが、全て英単語で構成されるプログラムの文の説明の時には、それがキーワードなのか名前なのかが解らなくなるので、普通は、名前の部分が斜体で書かれています。またはキーワードの部分が太字になっているとか。 これで、 INSERT INTO tbl_name (col_namel, col_name2, ...)VALUES (value1, value2, ...); という説明が何を意味しているかわかりますか?少なくとも、プログラムにこのまま書いている「はずが無い」と言うことが解っていただけると先に進めます。
その他の回答 (4)
- mitoneko
- ベストアンサー率58% (469/798)
No.3です。 「まさか」より、もっと根源的でしたか? あなたは、なにがしたいのですか? 「INSERT INTO文の書き方・使い方が知りたい。」。ならば、前の回答に書いたホームページを参照してください。ちなみに、このマニュアルのトップページは、http://dev.mysql.com/doc/refman/5.1/ja/index.htmlです。ただ、実は、この回答は不親切の極みです。このマニュアルはある程度リレーショナルデータベースの知識があることを前提に書かれているからです。この前提知識は、データベース入門なんて書籍を読んで勉強してください。 「INSERT INTO」文の使い方が、ヘルプで出てこないかが知りたい?というのであれば、そのような物はありません。 「MySQLのテキスト版マニュアルくらい、ちゃんとxamppに同梱してあるべきだ」と訴えたい?入手先に、問い合わせ先のリンクがあるでしょうから、メールしてください。多分、黙殺されます。このマニュアル結構大きいんです。単なる容量の無駄遣いですから。でも、ちゃんとマニュアルは別ダウンロードできるんですよ。web版のマニュアルもちゃんとありますしね。普通は、同梱していなくても不自由しないのですが・・・ MySQLのシステムプログラムが人に読める形式で書かれていると思っている?いえ。普通の人には読めません。時代がまだ8bitのマイコンだった頃には、バイナリを直接読める強者もいました。でも、今時のプログラム、それもDBMSのプログラムのバイナリを直接読める人間は多分いないでしょう。既に人を超えているような気がします。ついでに、バイナリが直接読める超人と仮定しても、すくなくとも、INSERT INTO・・・・・・と言う形でテキストが書いてあることは決してありません。なぜならそんな書き方をしてもコンピュータには何の役にも立たないからです。システムプログラムは構文を書いてあるものではありません。構文をいかに解析して、その解析した結果を、どのような手順で実現すれば良いかの手順が、コンピュータの世界で書いてあるものです。 そのいずれだと仮定しても、元の質問文に、書いてあるソースコードの存在価値が解らないのですが・・・
お礼
御回答有難うございました。 addxmas.php の教本の説明の項目を紹介します。 項目(1):◎ mysql_connect 項目のプログラム:$sv = mysql_connect($server, $user, $passwd) or die("Connection err1"); 項目(2):◎ mysql_selct_db 項目のプログラム:$db = mysql_select_db($dbname) or die("Connection error2"); 問題視した 項目(3):データベースのアクセス:登録処理 $sql = "insert into xmastran values('$book_id','$name','$org','$addr','$tel', '$mail','$course','$number')"; の説明中の「INSERT INTO」文のINSERT INTO tbl_name (col_namel, col_name2, ...)VALUES (value1, value2, ...);構文 のプログラムが addxmas.php addxmas.html のプログラムを探しても無くて、 xampp内も文字列検索でヒットしなくて!? 何処のことを言っているのかよくわかりませんでした。 なので、質問しました。 MySQLプログラムのどこかに書かれていると分かればそれでいいです。 ?素人+私は頭が悪いので”直ぐにピンと来ない”です。 なので、分からないことだらけです。 ここで言うプログラムの流れ、構造的面が素直に言ってわかりませんでした。 深く考えないでください^^ ただそれだけのことです。
- mitoneko
- ベストアンサー率58% (469/798)
質問文を読みながら・・・まさか、insert into文の使い方が書いてある構文の説明書を探してますか? それでしたら、mysqlのマニュアルを見るべきです。 パソコンにも入っているような気がするのですが、手っ取り早くは、 http://dev.mysql.com/doc/refman/5.1/ja/insert.html これ見てください。 多分、最近入れたのであれば、バージョンは5だと思うのですが・・・もし違うなら、同じページの右側に、4以前のマニュアルへのリンクもありますから、そちらからどうぞ。 でも、そもそも参考書に、insert intoの構文説明も書いてないなんて・・・それが、ほんとなら、その書籍への評価は、No2さんに激しく同意です。(セキュリティーとエラー処理に配慮したプログラムをちゃんと書くと肝心のやっていることが見えなくなるため、参考書の例題は、エラー処理無し・セキュリティーへの配慮無しという事は多いです。その場合でも、ちゃんとした本であれば、エラー処理・セキュリティーに対するお題が別にあるし、どこかに、例題をそのまま使っちゃダメよと書いてあるものですけどね。)
補足
ご回答ありがとうございます。 素人で、私にとりまして、未知である、 PHP&MySQLは初めての分野であり、よくわかりません!? INSERT INTO tbl_name (col_namel, col_name2, ...)VALUES (value1, value2, ...); 以上の構文は、MySQLのどこかに書かれているとの認識で間違いないでしょう? xamppのフォルダの文字列検索で、出てこなかった理由も疑問視 する思いですが!それはさておき、 考え方としては間違いないでしょうか! よろしくお願いします。
いくらなんでもミスちょっと多すぎないですか・・・ これだとバグ潰しに多大な時間を取られることになります。 もうちょっと入力を丁寧に。 関数名の意味も考えながら。 $("#exe").clck(booking); ↓ $("#exe").click(booking); query["nume"] = $("#nums").val(); ↓ query["number"] = $("#nums").val(); <h3 style="color: #aa0022">Xamasパーティ予約情報登録<h/3> ↓ <h3 style="color: #aa0022">Xamasパーティ予約情報登録</h3> <input type="radio" name="course" valus="Bコースリンク" />Bコース+ドリンク ↓ <input type="radio" name="course" valus="Bコースドリンク" />Bコース+ドリンク $sv = mysq1_connect($server, $user, $passwd) or die("Connection err1"); ↓ $sv = mysql_connect($server, $user, $passwd) or die("Connection err1"); $db = mysq1_select_db($dbname) or die("Connection error2"); ↓ $db = mysql_select_db($dbname) or die("Connection error2"); $sq1 = "insert into xmastran valuse('$book_id','$name','$org','$addr','$tel','$mall','$course','$number')"; ↓ $sql = "insert into xmastran values('$book_id','$name','$org','$addr','$tel', '$mall','$course','$number')"; $book_idという未定義の変数がいきなり登場していますがどこから出てきたのでしょうか?AUTO_INCREMENTされるプライマリキーならせめて $sql = "insert into xmastran(name, org, addr, tel, mail, course, number) values('$name','$org','$addr','$tel', '$mall','$course','$number')"; とすべきでは・・・? なお、このコードには「SQLインジェクション攻撃」に対する深刻な脆弱性があります。ローカルのテスト環境だけならば問題ないですが、実際にサービスをWeb上で公開するのは非常に危険なので、下記リンクを参考に書き直しを検討してください。 PHPでデータベースに接続するときのまとめ http://qiita.com/mpyw/items/b00b72c5c95aac573b71 PHP Manual - PDO http://php.net/manual/ja/book.pdo.php 参考書に書かれていることが全て正しいと思えば大間違いです。古い参考書ほど信頼できないものはないし、このコードだと出版当時であってもセキュリティ的に脆いです。要は「ダメな参考書」です。 私なりに書くならこんな感じですかね。 http://pastebin.com/mcmL8Qri
お礼
せっかく良い御回答をいただいていたのに、レスが遅れてすみませんでした。 ご指摘ありがとうございました。 再度見直したら、他にも、入力ミスがありました。 プログラミングは入力ミスをしないことは基本であり、 今度からちゃんと見直す癖をつけます。 この教本は以前質問した時も、教本の内容 自体に、問題視する回答を得ています。 私としましても、教本をかえたい気持ちもあるのですが、 せっかく、なんと1年8カ月かけて60%ぐらいまで進んでので、全部やってから 次のステップ行こうと思っています。 プログラムも日進月歩であり、パソコンほどじゃないと思いますが、 古くなると思います。 私の教本は一人で書かれているみたいですが、”三人寄れは何とか”ですので、 数人で書いた合作に比べると、一人で書いた教本は、ミスを指摘できなくて 完成度にかけるのではないでしょうか! プログラムは 行き詰まって脱落する人が多いそうです。 実際、私は頭が悪くて、息詰まる気味ですが、やっぱり目標が あるので、めげずに頑張っています。 To_aru_User様みたいになれたなら本望ですが^^
- Gotthold
- ベストアンサー率47% (396/832)
> $sq1 = "insert into xmastran valuse('$book_id','$name','$org','$addr','$tel', '$mall','$course','$number')";------------(3) ここじゃないの?ちゃんと(3)とかいてあるし。 (valuseはtypoっぽいかな?)
お礼
有難うございました。 今後ともよろしくお願いします。
お礼
有難うございます。 私は無知で以下の質問したことが、恥ずかしいですが、質問した ことで、以上御回答をいただいたことで、 「INSERT INTO」文のINSERT INTO tbl_name (col_namel, col_name2, ...)VALUES (value1, value2, ...);ことがaddxmas.phpの(3)のことを言っていることが分かりました。教本に、分かりづらい約30行の説明が”づらづら”書かれていて、意味ががやっと分かりつつあります。 addxmas.phpのプログラムの流れの説明です。 以下”よくぞ質問"した内容です。 説明中の「INSERT INTO」文のINSERT INTO tbl_name (col_namel, col_name2, ...)VALUES (value1, value2, ...);構文 のプログラムが addxmas.php addxmas.html のプログラムを探しても無くて、 xampp内も文字列検索でヒットしなくて!? 何処のことを言っているのかよくわかりませんでした。