$_POSTの内容をMySQLに保存するには?

このQ&Aのポイント
  • PHPの$_POSTを使ってデータをMySQLに保存する方法について教えてください。
  • コードを実行すると、Parse errorが発生し、エラーメッセージが表示されます。
  • どこを修正すれば正しくデータを保存できるようになるのか、教えていただけませんか?
回答を見る
  • ベストアンサー

$_POSTの内容をMySQLに保存するには?

いつも大変お世話になり誠にありがとうございます。 度々申し訳ございません。 標記の件。 エラーメッセージは Parse error: syntax error, unexpected identifier "into", expecting ")" in C:\xampp\htdocs\kanryou.php on line 9 です。 コードは先ほども提示したように blog_create.php <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blog</title> </head> <body> <?php $name = $_POST["name"]; $title = $_POST["title"]; $category = $_POST["category"]; $content = nl2br($_POST["content"]); echo "ペンネーム{$name}"; echo "ブログタイトル{$title}"; echo "カテゴリー {$category}"; echo "本文 {$content}"; ?> <hr> <br> <form action="/kanryou.php" method=""> <input type="submit" value="送信する"> </form> </main> </body> kanryou.php <?php require_once(blog_create.php); try{ $db = new PDO('mysql:dbname=blog_app;host=localhost;charset=utf8','root'); $count = $db->exec(INSERT into blog (id,name,title ,category ,content,post_at) ($_POST["id"],$_POST["name"],$_POST["title"],$_POST["category"],$_POST["content"],$_POST["post_at"]){ echo 'DB接続エラー' . $e->getMessage(); } </main> </body> echo "送信完了です。ありがとうございました。"; ?> 本当に申し訳ありません どうか教えてください。 どこを直せばいいでしょうか? ご回答のほど宜しくお願い申し上げます。

  • MySQL
  • 回答数6
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (741/5649)
回答No.3

それから。 blog_create.phpのmethodが指定されていないとgetの扱いになるかも知れませんので、 <form action="/kanryou.php" method="post"> にしておいた方がいいと思います。 form.phpはそうなってますよね。 それから。 blog_create.phpでテキストは表示していますが、 送信するためのコントロールがないので、 kanryou.phpで$_POST["name"]とかしても何も取得できません。 なので、<form>タグの内側に、 <input type="hidden" name="name" value="<?php echo $name; ?>"> とかでコントロールを配置してみてください。

kouzou250
質問者

お礼

すみません。 <form action="/kanryou.php" method="post"> <input type="hidden" name="name" value="<?php echo $name; ?>"> <input type="submit" value="送信する"> </form> こうするということですか? ご説明をお願い致します。

その他の回答 (5)

  • wormhole
  • ベストアンサー率28% (1622/5659)
回答No.6

>)がないよ!とまでは分かるのですが、どこに付けるのかが >解りませんでした。 まずは基本をしっかり勉強してください。 「何かよく分からないけど(悪い意味での)適当に書いてます」状態でしょ? それに、どこを直すか回答もらったところで何故それで直ったのか理解しないと意味ない。 あなたの今までの傾向からするとそれで済ませる可能性が非常に高い。

  • agehage
  • ベストアンサー率22% (2555/11370)
回答No.5

逆質問ですみません Parse error: syntax error, unexpected identifier "into", expecting ")" in C:\xampp\htdocs\kanryou.php on line 9 このエラーメッセージからkanryou.phpの9行目に構文エラー(書き方間違え)がある、というのまでは理解できていますか? お手数ですが補足にて回答願います エラーメッセージが読めなければ直しようがありません 私だってエラーは出しますが、これを見てどこを直さなければならないか判断してますよ

kouzou250
質問者

補足

)がないよ!とまでは分かるのですが、どこに付けるのかが 解りませんでした。

回答No.4

#3さんまいど! たしかに! <form action="/kanryou.php" method=""> <input type="submit" value="送信する"> </form> GETかPOST化もない上に、そもそも何も送ってないですね。 これ^^ Postmanで試せ!って言いたいところだが^^ 言ってもやらなそうなので、触れずに行きます~ っていうか、入力→確認→登録のサンプルは すでにこの人にあげてるので、 登録の所に、クエリ挟むだけで終わる話なんですがね~ ちゃんと読めば、もっと前にこんなの終わってると思うんだけど^^ 自分でやりたい!って言ってるので、あえてこの回答なんですけどね。 ってことで、質問者さん。。 他の人が書いたやつ治せば「間違いなく動くよ」 理解する気持ちと基本を覚えるだけで、すべて解決! うそじゃないよ!

kouzou250
質問者

補足

【クエリ挟む】とは??? どういうことなのでしょうか???

回答No.2

$count = $db->exec(INSERT into blog (id,name,title ,category ,content,post_at) ($_POST["id"],$_POST["name"],$_POST["title"],$_POST["category"],$_POST["content"],$_POST["post_at"]){ これをなおせばいい! まず、最低限「(INSERT into blog (id,~~~~」が、「文字じゃなければならない事」を 勉強してください。 さらに、execは関数の呼び出しでしょ? なぜ、 ,$_POST["post_at"]){ で、子階層に遷移してる? 基本をまず勉強を! POSTが問題なんじゃなくて、ソース自体が崩壊してるので。 (嘘じゃないですよ) 他の人も恐らく同じ回答ですがね。。 んま、全く意味のない、mb_substrを削除したところは 評価できるが。。 ひとまず、ドットチェーンで、ストリングを形成すれば治るよ!

kouzou250
質問者

補足

ドットチェーンで、ストリングを形成とは??? どういう意味ですか???

  • t_ohta
  • ベストアンサー率38% (5086/13294)
回答No.1

> $count = $db->exec(INSERT into blog・・・・ 文字列は ' (シングルクォート) または " (ダブルクォート) で囲む必要があります。 囲んでないとPHPの命令や変数、定数などと判断されます。

関連するQ&A

  • MySQL INSERT into

    いつも大変お世話になり誠にありがとうございます。 標記の件。 $_postで取ってきたデータがMySQLに挿入できません。 どう直せばいいでしょうか? エラーメッセージは Parse error: syntax error, unexpected variable "$stmt" in C:\xampp\htdocs\kanryou.php on line 12 blog_create.php <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blog</title> </head> <body> <?php $name = $_POST["name"]; $title = $_POST["title"]; $category = $_POST["category"]; $content = nl2br($_POST["content"]); echo "ペンネーム{$name}"; echo "ブログタイトル{$title}"; echo "カテゴリー {$category}"; echo "本文 {$content}"; ?> <hr> <br> <form action="/kanryou.php" method="post"> <input type="hidden" name="id" value="<?php echo $id; ?>"> <input type="hidden" name="name" value="<?php echo $name; ?>"> <input type="hidden" name="title" value="<?php echo $title; ?>"> <input type="hidden" name="category" value="<?php echo $category; ?>"> <input type="hidden" name="content" value="<?php echo $content; ?>"> <input type="hidden" name="post_at" value="<?php echo $post_at; ?>"> <input type="submit" value="送信する"> </form> </main> </body> kanryou.php <?php require_once(blog_create.php); try{ $db = new PDO('mysql:dbname=blog_app;host=localhost;charset=utf8','root'); $sql ="INSERT into blog (id,name,title ,category ,content ,post_at)"; ('$_POST["id"],$_POST["name"],$_POST["title"],$_POST["category"],$_POST["content"],$_POST["post_at"]'){ $stmt =$pdo->prepare($sql) $stmt->execute(); echo 'DB接続エラー' . $e->getMessage(); } echo "送信完了です。ありがとうございました。";?> 以上です。 度々申し訳ございません。 どうか教えてください。 宜しくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • 投稿する->投稿完了 SQL挿入!!!

    いつも大変お世話になり誠にありがとうございます。 標記の件。 色々と調べましたがコーディングが解りません。 度々申し訳ございません。 どうか教えてください。 添付のボタンを押して、送信完了です。ありがとうございました。と 表示して、それと同時にMySQLに挿入したいです。 本当に申し訳ありません ご回答のほど宜しくお願い申し上げます。      記 blog_create.php <?php session_cache_limiter('public'); session_start(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blog</title> </head> <body> <?php $name = $_POST["name"]; $title = $_POST["title"]; $category = $_POST["category"]; $content = nl2br($_POST["content"]); //$post_at = $_POST["post_at"]; echo "ペンネーム{$name}"; echo "ブログタイトル{$title}"; echo "カテゴリー {$category}"; echo "本文 {$content}"; ?> <hr> <br> <input type="submit" action=kanryou.php value="送信する"> kanryou.php <?php require_once(blog_create.php); echo name; echo title; echo category; echo content; INSERT blog (name,title,category,content) VALUES(:name,:title,:category,:content); echo "送信完了です。ありがとうございました。"; ?> 以上です。 ご回答のほど宜しくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • $_POST変数が受け取れない。

    いつも大変お世話になり誠にありがとうございます。 度々申し訳ございません。 標記の件。 $_POST変数が受け取れません。 一昨日はこれで行けたと思ったのですが var_dump()で調べたらNULLでした。 どうして$_POST変数が受け取れないのでしょうか? すみません。どうか教えてください。 エラーメッセージは Warning: Undefined array key "name" in C:\xampp\htdocs\blog_create.php on line 11 Warning: Undefined array key "title" in C:\xampp\htdocs\blog_create.php on line 12 Warning: Undefined array key "category" in C:\xampp\htdocs\blog_create.php on line 13 Warning: Undefined array key "content" in C:\xampp\htdocs\blog_create.php on line 14 ペンネームブログタイトルカテゴリー 本文 です。 コードは form.php <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){} ?> <h2>ブログフォーム</h2> <form action="/blog_create.php/" method=_POST> ペンネーム<br> <input type="text" name="title"><br> ブログタイトル<br> <input type="text" name="title"><br> カテゴリー<br> <input type="text" name="title"><br> ブログ本文<br> <textarea name="content" id="content" cols="50" rows="80"></textarea><br> <input type="submit" value="確認ページへ"> </form> <p><a href="/">戻る</a></p> </body> </html> blog_create.php <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blog</title> </head> <body> <?php $name = $_POST["name"]; $title = $_POST["title"]; $category = $_POST["category"]; $content = nl2br($_POST["content"]); //$post_at = $_POST["post_at"]; echo "ペンネーム{$name}"; echo "ブログタイトル{$title}"; echo "カテゴリー {$category}"; echo "本文 {$content}"; ?> <hr> <br> <input type="submit" action="/kanryou.php" value="送信する"> </body> 後退してしまいました。 すみません。 ご回答のほど何卒宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • POSTでwarning!

    いつも大変お世話になり誠にありがとうございます。 また、同じような質問で申し訳ありません。 標記の件。 ブログフォームのソースは下記です。 表示のソースも下記です。 どうすれば表示されるでしょうか? ご回答のほど宜しくお願い申し上げます。        記 <h2>ブログフォーム</h2> <form action="blog_create.php" method=_POST> <label>ペンネーム:</label> <input type="text" name="name" value=""><br> <label>タイトル:</label> <input type="text" name="title" value=""><br> <label>カテゴリー:</label> <input type="text" name="category" value=""><br> <label>ブログ本文:</label><br> <textarea name="content" id="content" cols="50" rows="80"></textarea><br> <input type="submit" value="確認画面へ"> <?php $name = $_POST["name"]; $title = $_POST["title"]; $category = $_POST["category"]; $content = nl2br($_POST["content"]); echo "ペンネーム{$name}"; echo "タイトル{$title}"; echo "カテゴリー {$category}"; echo "本文 {$content}"; ?> <hr> <br> <input type="submit" action="/kanryou.php" value="送信する"> Warning: Undefined array key "name" in C:\xampp\htdocs\blog_create.php on line 13 Warning: Undefined array key "title" in C:\xampp\htdocs\blog_create.php on line 14 Warning: Undefined array key "category" in C:\xampp\htdocs\blog_create.php on line 15 Warning: Undefined array key "content" in C:\xampp\htdocs\blog_create.php on line 16 ペンネームタイトルカテゴリー 本文

    • ベストアンサー
    • PHP
  • 【送信】ボタンが無反応!?

    いつも大変お世話になり誠にありがとうございます。 標記の件。 色々と試みましたが、何も反応しません。 MySQLに登録して、 「送信完了しました。ありがとうございます。」と出したいのですが、何も反応しません。 form.php <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <h2>ブログフォーム</h2> <form method="POST" action="blog_create.php">  ペンネーム<br> <input type="text" name="name" ><br>   ブログタイトル<br>   <input type="text" name="title" ><br>    カテゴリー<br> <input type="text" name="category" ><br> ブログ本文<br> <textarea name="content" id="content" cols="50" rows="80"></textarea><br> <input type="submit" value="確認画面へ"> </form> <p><a href="index.php">戻る</a></p> </body> </html> blog_create.php <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blog</title> </head> <body> <?php $name = $_POST["name"]; $title = $_POST["title"]; $category = $_POST["category"]; $content = nl2br($_POST["content"]); //$post_at = $_POST["post_at"]; echo "ペンネーム{$name}"; echo "ブログタイトル{$title}"; echo "カテゴリー {$category}"; echo "本文 {$content}"; ?> <hr> <br> <input type="submit" action="/kanryou.php" value="送信する"> </main> </body> kanryou.php <body> <header> <h1>PHP</h1> </header> <main> <h2>登録結果!</h2> <?php <pre> <?php try{ $db = new PDO('mysql:dbname=blog_app;host=localhost;charset=utf8','root'); $count = $db->exec('INSERT blog (id ,name,title ,category ,content , post_at=timestamp()'); ( $_POST['id'] ,mb_substr(0,$name),mb_substr(0,$title),mb_substr(0,$category),mb_substr(0,$content), post_at=timestamp()'); echo $count . "件のデータを登録しました!"; } catch(PDOException $e){ echo 'DB接続エラー' . $e->getMessage(); } ?> </pre> </main> </body> echo "送信完了です。ありがとうございました。"; ?> すみません。 どうしても、無反応です。 困っています。 教えてください。 どうぞ宜しくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • php mysqlについて

    初心者です宜しくお願いします。 phpからデータベースを使いたいのですが(mysql)、mysql_query()関数のところで1366エラーが出ます。 半角英数ならエラーは出ません。 プログラムを貼り付けます。どなたかお願いします、説明をもっと書きたいのですが私もあまりわかってないのでどうもすみません。 今やっていることは全てローカルですwindowsを使ってます、文字コードもshift_jisです。phpもmysqlも一台のコンピュータでやっています。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>MySQLへデータを登録</title> </head> <body> DBとの連携テスト結果<br> <?php // DBに接続 if(!$con=mysql_connect("localhost","root","y3kwyuba")){ echo"connect_error"; exit; } // DBを選択 if(!mysql_select_db("test",$con)){ echo"select_db_error"; exit; } //MySQL4.1への対応 //mysql_query("SET NAMES SJIS"); この上の行のコメントをはずすとうまく動くのですが色々調べましたら、この書き方は推奨されないと書いてありました、他に対策はあるのでしょうか? $name = $_POST['nm']; $age = $_POST['age']; // フォームで送られてきたデータでINSERT文を作成 $sql = "insert into t_touroku(name,age) values('$name',$age)"; // SQLを実行 if(!$res=mysql_query($sql,$con)){ echo"query_error"; echo "エラー番号:".mysql_errno(), #エラー番号 "メッセージ:".mysql_error(); #エラーメッセージ exit; } // DBから切断 mysql_close($con); // メッセージ出力 echo"登録完了"; ?> </body> </html> 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPでMySQLのDBに接続

    PHP,MySQLが使えるレンタルサーバーを借りているのですが, PHPでMySQLに接続し、php_dbを選択をするようにしたいのですが、 この時DBファイルはどこに置けばいいのでしょうか? 現在はMySQLの管理コマンド(?)とは別にpublic_htmlの中に PHPフォルダを作り、そこにDBファイルを入れています。 PHPのスクリプトは <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>練習</title> <meta http-equiv="content-language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head><body> <?php $con = mysql_connect(); if (!$con) { echo ("Error:MySQLに接続できませんでした。<br />"); } else { echo ("接続ID=$con<br>\n"); } $selectdb = mysql_select_db("php_db" ,$con); if (!$selectdb) { echo ("Error:データベースを選択できませんでした"); } else { echo ("データベースphp_dbを選択しました。"); } ?> </body></html> としています。 MySQLには接続ができるのですが、php_dbには接続ができません。 php_dbのおき場所を変えるのか、ファイルの指定が間違っているのか その他、どの要に変更をしたらよいのでしょうか? お願いします。 環境はレンタルサーバーがLINUXでPHPのバージョンなどはわからないんです・・・!! 開発がOSがW2kでFTPで転送してます。

    • ベストアンサー
    • PHP
  • POSTされた値をEUCで表示したい

    <?php echo '<html><head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> </head> <body> <form action="test2.php" method="POST"> <input name="str1" value="テストです"> <input type="submit"> </form> </body></html>'; exit; } ?> こうして送信されたデータは <?php echo '<html><head> <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS"> </head><body>'; echo $_POST['str1']; ・・・・・ として表示しますが、このままのテストソースではSJISで普通に表示されますが、EUCで表示するにはWindowsの中のphp.iniを編集すればよいと思います。 どのようにすればよいですか? test2.phpが・ニ・ケ・ネ、ヌ、ケと表示したら成功です。

    • 締切済み
    • PHP
  • wordpressのdescription設定

    wordpress、phpの初心者です。 SEO対策のために、descriptionを全ページ、コンテンツに適したもので出力できればと思い、 ・トップページは一般設定の「キャッチフレーズ」 ・カテゴリーページは「カテゴリーの説明文」 ・投稿ページは「カスタムフィールド」 ・それ以外、及びカスタムフィールドが入力されていない投稿ページは「ページタイトル | 一般設定のキャッチフレーズ」 上記の用に出力できるよう、ググって色んなサイトを参考に下記のように記述したのですが、 真っ白になって表示されません。 <?php if (is_home()) { echo '<meta name="description" content="<?php bloginfo('description'); ?>" />'; } elseif (is_category()) { echo '<meta name="description" content="<?php echo category_description(); ?>" />'; } elseif(is_single()){ echo '<meta name="description" content="<?php echo get_post_meta($post->ID,'description',true);?>" />'; } else { echo '<meta name="description" content="<?php wp_title('|', true, 'right'); bloginfo('description'); ?>" />'; }?> プラグインもイマイチ希望のものが見つからず、 何とか試行錯誤しているのですが、未だに解決出来ずにいます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP/MySQL SQLエラーについて。

    PHP/MySQLについての質問です。 当方PHP/MySQLについては初心者で、現在参考書を見ながらWebアプリケーションを作成しています。 いくらやっても成功しない例があるので、どこが間違っているのか、 なぜ成功しないのかご教示願いたいです。 エラー名:SQL実行エラー 要因:不明。SQL文を変えたりしたところ成功したこともあるので(elect id,name,age from input_table 等)SQL文に間違いがあるのか? -------------------input.html------------------------ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <form action="input.php" method="post"> 名前:<input type="text" name="nm"> 年齢:<input type="text" name="age"> <input type="submit" name="exec" value="登録"> </form> </body> </html> -----------------------input.php---------------------------- <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <?php //DB接続 if(!$con=mysql_connect("localhost","root","********")){ //passwardは正確 echo"接続エラー"; exit; } //DB選択 if(!mysql_select_db("input",$con)){ echo"DB選択エラー"; exit; } $sql = "insert into input_table(name,age) values('$nm',$age)"; if(!$res=mysql_query($sql)){ echo"SQL実行エラー"; //ここでこのエラーが表示されてしまう exit; } echo "登録完了"; mysql_close($con); ?> </body> </html> --------------------database----------------------- create table input_table( id int not null auto_increment, name varchar(20) not null, age int not null, primary key(id) )

    • ベストアンサー
    • PHP