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

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

ただいまの
回答率

88.04%

php言語でデータベースに登録する方法?

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,307

score 7

前提・実現したいこと

PHPでお問い合わせフォームを作っています。
そして、Mysqlでsql文を作りデータベースを作っています。

発生している問題・エラーメッセージ

そこで発生している問題が二つあります。
一つはinfoexec.phpの方にformからpostでexec.phpに飛ばしています。
exec.phpからロケーションでfinish.phpに飛ばしているのですが、ロケーションが動作しません。
また、infoexec.phpでデータベースに登録プログラムを書いているのにも関わらず、
登録できません。どうしてでしょうか?
教えて下さい。

エラーメッセージ
エラーメッセージはありません。症状としましては、画面が真っ白になります。

該当のソースコード

'infoexec.php{

    session_start();
    $_SESSION["fudougiken"]=1;
    $flag=false;
    $companyname=htmls
pecialchars($_POST["companyname"],ENT_QUOTES);
    $department=htmlspecialchars($_POST["department"],ENT_QUOTES);
    empty($_POST["contactname"]) ? $flag=true : $contactname=htmlspecialchars($_POST["contactname"],ENT_QUOTES);
    empty($_POST["furiga"]) ? $flag=true : $furiga=htmlspecialchars($_POST["furiga"],ENT_QUOTES);
    $acsesss=htmlspecialchars($_POST["acsesss"],ENT_QUOTES);
    empty($_POST["pref"]) ? $flag=true : $pref=htmlspecialchars($_POST["pref"],ENT_QUOTES);
    empty($_POST["city"]) ? $flag=true : $city=htmlspecialchars($_POST["city"],ENT_QUOTES);
    empty($_POST["town"]) ? $flag=true : $town=htmlspecialchars($_POST["town"],ENT_QUOTES);
    $build=htmlspecialchars($_POST["build"],ENT_QUOTES);
    $tell=htmlspecialchars($_POST["tell"],ENT_QUOTES);
    $fax=htmlspecialchars($_POST["fax"],ENT_QUOTES);
    empty($_POST["email"]) ? $flag=true : $email=htmlspecialchars($_POST["email"],ENT_QUOTES);
    empty($_POST["opinion"]) ? $flag=true : $opinion=htmlspecialchars($_POST["opinion"],ENT_QUOTES);
?>```  

htmlの部分に  

HTML

```
<form action="exec.php" method="post">
                    <input type="hidden" name="companyname" value="<?php echo $companyname; ?>">
                    <input type="hidden" name="department" value="<?php echo $department; ?>">
                    <input type="hidden" name="contactname" value="<?php echo $contactname; ?>">
                    <input type="hidden" name="furiga" value="<?php echo $furiga; ?>">
                    <input type="hidden" name="acsesss" value="<?php echo $acsesss; ?>">
                    <input type="hidden" name="pref" value="<?php echo $pref; ?>">
                    <input type="hidden" name="city" value="<?php echo $city; ?>">
                    <input type="hidden" name="town" value="<?php echo $town; ?>">
                    <input type="hidden" name="build" value="<?php echo $build; ?>">
                    <input type="hidden" name="tell" value="<?php echo $tell; ?>">
                    <input type="hidden" name="fax" value="<?php echo $fax; ?>">
                    <input type="hidden" name="email" value="<?php echo $email; ?>">
                    <input type="hidden" name="opinion" value="<?php echo $opinion; ?>">
                    <input type="submit" name="sub1" value="送信する">
                </form>
                <form action="info.php" method="post">
                    <input type="hidden" name="companyname" value="<?php echo $companyname; ?>">
                    <input type="hidden" name="department" value="<?php echo $department; ?>">
                    <input type="hidden" name="contactname" value="<?php echo $contactname; ?>">
                    <input type="hidden" name="furiga" value="<?php echo $furiga; ?>">
                    <input type="hidden" name="acsesss" value="<?php echo $acsesss; ?>">
                    <input type="hidden" name="pref" value="<?php echo $pref; ?>">
                    <input type="hidden" name="city" value="<?php echo $city; ?>">
                    <input type="hidden" name="town" value="<?php echo $town; ?>">
                    <input type="hidden" name="build" value="<?php echo $build; ?>">
                    <input type="hidden" name="tell" value="<?php echo $tell; ?>">
                    <input type="hidden" name="fax" value="<?php echo $fax; ?>">
                    <input type="hidden" name="email" value="<?php echo $email; ?>">
                    <input type="hidden" name="opinion" value="<?php echo $opinion; ?>">
                    <input type="submit" name="sub1" value="修正する">
                </form>
}

exec.php {

PHP
<?php
    session_start();
    if(empty($_SESSION["fudougiken"]) || $_SESSION["fudougiken"]!=1) exit();
    // データベースへの接続初期化
    mysql_connect("localhost","root","");
    mysql_select_db("fudougiken");
    mysql_query("set names utf8;");
    if(empty($_POST["companyname"]) || empty($_POST["department"]) || empty($_POST["contactname"]) || empty($_POST["furiga"]) || empty($_POST["acsesss"]) || empty($_POST["pref"]) || empty($_POST["city"]) || empty($_POST["town"]) || empty($_POST["build"]) || empty($_POST["tell"]) || empty($_POST["fax"]) || empty($_POST["email"]) || empty($_POST["opinion"])) exit();
    $companyname=mysql_real_escape_string($_POST["companyname"]);
    $department=mysql_real_escape_string($_POST["department"]);
    $contactname=mysql_real_escape_string($_POST["contactname"]);
    $contactname=mysql_real_escape_string($_POST["furiga"]);
    $contactname=mysql_real_escape_string($_POST["acsesss"]);
    $contactname=mysql_real_escape_string($_POST["pref"]);
    $contactname=mysql_real_escape_string($_POST["city"]);
    $contactname=mysql_real_escape_string($_POST["town"]);
    $contactname=mysql_real_escape_string($_POST["build"]);
    $contactname=mysql_real_escape_string($_POST["tell"]);
    $contactname=mysql_real_escape_string($_POST["fax"]);
    $contactname=mysql_real_escape_string($_POST["email"]);
    $contactname=mysql_real_escape_string($_POST["opinion"]);
    $sql="insert into otoiawase(companyname,department,contactname,furiga,acsesss,pref,city,town,buile,tell,fax,email,opinion) values(\"".$companyname."\",\"".$department."\",\"".$contactname."\",\"".$furiga."\",\"".$acsesss."\",\"".$pref."\",\"".$city."\",\"".$town."\",\"".$build."\",\"".$tell."\",\"".$fax."\",\"".$femail."\",\"".$fopinion."\");";
    $res=mysql_query($sql);
    if($res){
        $msg=1;
    }else{
        $msg=0;
    }
    header("Location:../fudougiken/finish.php?msg=".$msg);
    exit();
?>
}


記載しています。

試したこと

insert into otoiawase(companyname,department,contactname,furiga,acsesss,pref,city,town,buile,tell,fax,email,opinion) values(\"".$companyname."\",\"".$department."\",\"".$contactname."\",\"".$furiga."\",\"".$acsesss."\",\"".$pref."\",\"".$city."\",\"".$town."\",\"".$build."\",\"".$tell."\",\"".$fax."\",\"".$femail."\",\"".$fopinion."\");
のインサート文をphpMyAdminのsql文の項目でsql文に直して記載するとちゃんとデータに格納出来ました。

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

より詳細な情報
また、phpMyadminに入る時にパスワード関連でちゃんと出来なかったのか。
MySQL のデフォルト特権アカウントである root ユーザでパスワードを使用せずに接続しています。お使いの MySQL サーバはこのデフォルト設定で動作しているため不正アクセス可能な状態になっています。root ユーザのパスワードを設定することによって、必ずこのセキュリティホールは閉ざしてください。
You are using an incomplete translation, please help to make it better by contributing.

このようなエラーメッセージが出ています。このためでしょうか?

データベースサーバ

サーバ: Localhost via UNIX socket
サーバの種類: MariaDB
サーバのバージョン: 10.1.19-MariaDB - Source distribution
プロトコル バージョン: 10
ユーザ: root@localhost
サーバの文字セット: UTF-8 Unicode (utf8)

ウェブサーバー
Apache/2.4.23 (Unix) OpenSSL/1.0.2j PHP/5.6.28 mod_perl/2.0.8-dev Perl/v5.16.3
データベースクライアントのバージョン: libmysql - mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
PHP 拡張: mysqli ドキュメント
PHP version: 5.6.28

phpMyAdmin

バージョン情報: 4.5.2, 最終安定バージョン: 4.6.5.2

となっています。宜しく御願いします。

後、こちらのサイトのヘルプを見ながらやりましたが、シンタックス機能での色変更ができません。どうしてでしょうか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2017/01/02 00:50 編集

    コードはそれぞれコードブロックで囲んでいただけませんか?また、コードブロックの開始部分を「```HTML」「```PHP」にすると言語にあわせたコードハイライトも利用出来ます。追記:記入エリアの右部分あたりにリアルタイムに結果が表示されていると思うので、そこを見ながら調整してください。

    キャンセル

  • kei344

    2017/01/02 01:03

    質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。

    キャンセル

  • NaokiTatsumi

    2017/01/05 10:06

    囲みましたがこちらでも間違ってますか?

    キャンセル

回答 3

checkベストアンサー

+2

詳しく全部は見てないですが、、、
パット見、以下の間違えがあるように思えます。

○誤

    $contactname=mysql_real_escape_string($_POST["contactname"]);
    $contactname=mysql_real_escape_string($_POST["furiga"]);
    $contactname=mysql_real_escape_string($_POST["acsesss"]);
    $contactname=mysql_real_escape_string($_POST["pref"]);
    $contactname=mysql_real_escape_string($_POST["city"]);
    $contactname=mysql_real_escape_string($_POST["town"]);
    $contactname=mysql_real_escape_string($_POST["build"]);
    $contactname=mysql_real_escape_string($_POST["tell"]);
    $contactname=mysql_real_escape_string($_POST["fax"]);
    $contactname=mysql_real_escape_string($_POST["email"]);
    $contactname=mysql_real_escape_string($_POST["opinion"]);

○正

    $contactname=mysql_real_escape_string($_POST["contactname"]);
    $furiga=mysql_real_escape_string($_POST["furiga"]);
    $acsesss=mysql_real_escape_string($_POST["acsesss"]);
    $pref=mysql_real_escape_string($_POST["pref"]);
    $city=mysql_real_escape_string($_POST["city"]);
    $town=mysql_real_escape_string($_POST["town"]);
    $build=mysql_real_escape_string($_POST["build"]);
    $tell=mysql_real_escape_string($_POST["tell"]);
    $fax=mysql_real_escape_string($_POST["fax"]);
    $email=mysql_real_escape_string($_POST["email"]);
    $opinion=mysql_real_escape_string($_POST["opinion"]);

また、「インサート文をphpMyAdminのsql文の項目でsql文に直して記載するとちゃんとデータに格納出来ました。」
と書いてありますが、

echo $sql;


で出力したSQL文を実行したのではなく、
プログラム上のSQLを修正して実行するのはあまり意味ないですよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/15 21:35

    ベストアンサーに選ばれたので、もう1点。

    ○正

    の中に、mysql_*とありますが、
    すべてmysqli_*に変更した方が良いですよ。
    (Kosuke_Shibuyaさんの回答を参考にしてください)

    キャンセル

+1

PHPでエラーを表示する&表示するエラーを設定する

mysql_query

警告
この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。 MySQLi あるいは PDO_MySQL を使うべきです。詳細な情報は MySQL: API の選択 や それに関連する FAQ を参照ください。 この関数の代替として、これらが使えます。
     mysqli_query()
   PDO::query()

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/02 01:44

    ありがとう御座います。ですが、全然良く分かってないです。
    まず、こちらは
    僕が記載した
    MySQL のデフォルト特権アカウントである root ユーザでパスワードを使用せずに接続しています。お使いの MySQL サーバはこのデフォルト設定で動作しているため不正アクセス可能な状態になっています。root ユーザのパスワードを設定することによって、必ずこのセキュリティホールは閉ざしてください。
    You are using an incomplete translation, please help to make it better by contributing.
    のエラーメッセージに関してでしょうか?

    キャンセル

  • 2017/01/02 01:47 編集

    > ですが、全然良く分かってないです。
    「全然わからない」のであれば、何か入門書を手に入れて、基礎から学んでください。

    ちなみに、ご自身の書かれたコードについて、一字一句説明することができますか?

    キャンセル

0

infoexec.phpとexec.phpは、同じ階層にありますよね?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/01 23:19

    はい。あります。

    キャンセル

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

  • ただいまの回答率 88.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る