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

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

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

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

Q&A

解決済

2回答

355閲覧

SQLのINSERT文の書き方が分かりません。

1004

総合スコア74

PHP

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

0グッド

0クリップ

投稿2018/09/18 13:53

編集2018/09/18 14:08

前提・実現したいこと

PHPでテキストボックスの内容をuserテーブルのcontentsカラムに入れる機能を作っています。
どのcontantsカラムに入れるかはメールアドレスに紐づいている一意のidのcontentsカラムに入れようとしています。また、このSQLの書き方が分かりません。分かる方、ご教示お願いいたします。
textボックスに入れた文字がDBに登録すらされません。
SQL構文エラーチェックで掃かれたエラーは下記になります。

イメージ説明

該当のソースコード

<?php session_start(); $link = mysqli_connect("localhost","root","root","memberapp"); if(mysqli_connect_error()){ die("DBへの接続失敗!"); } echo "このユーザーは".$_SESSION['email']."でログインしています。"; //テキストボックスに入力された内容をメールアドレスのidに紐づけてcontentsカラムに登録。 $sql = "INSERT INTO users (contents) select id from users"; ?> <form method="post"> <input type="text" name="text" placeholder="Please fill in the blank"> <input type="submit" name="submit" value="投稿"> </form>

試したこと

SQL構文チェックツールでエラーを掃いたが、そのエラーの意味が分からず。

補足情報(FW/ツールのバージョンなど)

OS:windows10
ブラウザ:Edge

よろしくお願いいたします。

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

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

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

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

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

SatoshiMashino

2018/09/18 13:59

吐いたエラーの内容を頂けると、より回答が付きやすくなると思いますよ!
papinianus

2018/09/18 14:01

構文にエラーがないので、「SQL構文チェックツールでエラーを掃いた」そのものを提示してください。
backyard

2018/09/18 14:04

どうやらSQL文そのものの書き方の質問に見受けられますが……まずは、テキストボックスやPHPは置いておいて、データベースに対してSQL文を発行して、想定したInsert処理を実行できますでしょうか? それをPHPでどう作るかが分からない、であればPHPの質問ですが、前述のInsert文が書けない、というのであれば、申し訳ありませんがご自分でSQLの基礎を一通り勉強していただかないと、ここで具体的なSQLを(テーブルの構成なども分からない状態で)お伝えするのは困難だと思います。また、SQLの基礎をここの回答欄でお伝えするのも困難です。また「エラーの意味が分からず」といわれるのであれば、どういうエラーが出たのかを書くようにしましょう。
papinianus

2018/09/18 14:34

ダブルクォートつきでインサートを実行しようとしているようですが、$sqlの実行をしている箇所のコードを開示してください。そこにエラーがあるので。
1004

2018/09/18 23:49

こちらが$sqlを実行した際のブラウザ上で掃かれたエラーコードになります。Notice: Undefined index: text in C:\MAMP\htdocs\mysql\afterLogin.php on line 16
guest

回答2

0

どのカラムを指定して と、どのデータをいれるのか が抜けているのが問題のように思います!

// contentを取得する $contents = $_POST['text']; // これがフォームに入力した内容 $sql = 'INSERT INTO users(contents) VALUES($contents) WHERE id = (ユーザーのID?)'

みたいにすると良い気がします!
テーブル名を指定した後に どのカラムにいれるのか その後に どのデータをいれるのか を指定してあげる必要があります!
SELECT としている部分はどのユーザーなのかを指定する条件になるのですかね? で、あれば WHERE句 を使います!

投稿2018/09/18 15:42

t_kusakabe74

総合スコア549

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

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

1004

2018/09/18 23:36

ご教示いただきました内容をphpファイルに書き込んでみたところ、エラーとなりました。 エラー内容↓ Notice: Undefined index: text in C:\MAMP\htdocs\mysql\afterLogin.php on line 16 phpでエラーの該当行↓ $contents = $_POST['text']; // これがフォームに入力した内容 SQL構文チェックツールでも既出と同様のエラー文が掃かれてしまいました。
madoka9393

2018/09/19 00:00

横から失礼いたします。 「Undefined index」なので簡単に言うと「「$_POST」に「'text'」なんてないよ」ということですね。 以下の質問と回答が参考になるかもしれません。 Undefined indexエラーを消したい。 https://teratail.com/questions/65452
1004

2018/09/19 08:12

教えていただいたURLが非常に参考になりました。 おかげさまでうまくいきました。 ご回答、ありがとうございます。
madoka9393

2018/09/19 08:17

微力ながらお力添えできたのであれば幸いです。 後に同様の状況になった人のためにも、自己解決で解決法を追記してあげるといいかもです。
1004

2018/09/19 08:24

ありがとうございます。 そうさせていただきます。
guest

0

自己解決

Undefined indexエラーを消したい。
https://teratail.com/questions/65452
上記、記事を参照し、コードを以下のように書き換えることで改善されます。

if(!empty($_POST['text'])){ //処理内容; }

投稿2018/09/19 08:36

1004

総合スコア74

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問