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

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

ただいまの
回答率

90.49%

  • PHP

    20797questions

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

  • MySQL

    6000questions

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

PHP MySQL の連携

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 533

yamaji

score 14

PHPのWEBサイトで名前、年齢を登録ボタンを押すとMYSQLのテーブルに格納させる設定方法を教えて下さい。(レンタルサーバで各ソフトはインストールしています。) 
PHPとMYSQLを連携させる方法

ネットでMYSQLと調べ手順通り作業しました。
設計 http://www.go-next.co.jp/blog/web/php/15962/ 

登録 http://www.go-next.co.jp/blog/web/php/20735/

MYSQLでSQL文を使用してデータの追加、削除はできます。

<?php

define('DB_DATABASE', 'dotinstall_db');
define('DB_USERNAME', 'dbuser');
define('DB_PASSWORD', 'g6fd7Xx');
define('PDO_DSN', 'mysql:dbhost=localhost;dbname=' . DB_DATABASE);

try {
// connect
$db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// update
$stmt = $db->prepare("update users set score = :score where name = :name");
$stmt->execute([
':score' => 100,
':name' => 'taguchi'
]);
echo 'row updated: ' . $stmt->rowCount();

// delete
$stmt = $db->prepare("delete from users where name = :name");
$stmt->execute([
':name' => 'dotinstall'
]);
echo 'row deleted: ' . $stmt->rowCount();

} catch (PDOException $e) {
echo $e->getMessage();
exit;
}

下記のPHP.TXTで調べた内容を追記しときます。

問)HTMLとPHPを使い登録ボタンを作成し編集・削除を行いMYSQLのテーブルに格納したいです・
(HTMLで下記の表は作成できます。)

以上、拙いですが、宜しくお願い致します。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • yambejp

    2017/08/15 11:57

    PHPのソースがダブっています。またソースのタグで囲って下さい。「下記のPHP.TXT」や「ファイル1」がわかりません

    キャンセル

  • hotta

    2017/08/15 16:42

    ソース全体を範囲指定して<code>をクリックしてください。

    キャンセル

回答 1

checkベストアンサー

+1

とりあえず、PHPでデータを登録・その結果を取得してテーブルに表示するサンプルを提示してみます。

<?php
define('DB_DATABASE', 'test');
define('DB_USERNAME', 'test');
define('DB_PASSWORD', 'test');
define('PDO_DSN', 'mysql:dbhost=localhost;charset=utf8mb4;dbname=' . DB_DATABASE);

try {
    // connect
    $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // update
    $stmt = $db->prepare("update users set score = :score where name = :name");
    $stmt->execute([
        ':score' => 100,
        ':name' => 'taguchi'
        ]);
    echo 'row updated: ' . $stmt->rowCount();

    // delete
    $stmt = $db->prepare("delete from users where name = :name");
    $stmt->execute([
        ':name' => 'dotinstall'
        ]);
    echo 'row deleted: ' . $stmt->rowCount();
    for($i=0;$i<10;$i++){
        $stmt = $db->prepare('INSERT INTO `users` (`name`, `score`) VALUES (:name,:score)');
        $stmt->execute([
            ':name' => 'test' . $i,
            ':score' => 100 + $i
        ]);        
    }
    $data = $db->query('SELECT * FROM users');
} catch (PDOException $e) {
    echo $e->getMessage();
    exit;
}
?>
<!DOCTYPE HTML>
<html>
    <head></head>
    <body>
        <table>
            <tr>
                <th>name</th>
                <th>score</th>                
            </tr>
            <?php foreach ($data as $value) : ?> 
            <tr>
                <td><?= $value['name']; ?></td>
                <td><?= $value['score']; ?></td>
            </tr>
            <?php endforeach; ?>
        </table>
    </body>
</html>

登録内容は、$_POST['name']等でパラメータを受け取り、それをキーにしてSQLを発行すれば良いのでは?

 POSTデータの受け渡し方

遷移元

<!DOCTYPE HTML>
<html>
    <head></head>
    <body>
        <form method="POST" action="遷移先.php">
            <input type="text" name="name">
            <input type="submit" name="doSomething" value="ボタン">
        </form>
    </body>
</html>


遷移先

<?PHP
   $test = $_POST["name"];//これで遷移元で指定されたテキストファイルのデータを取得できる
?>

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/08/16 13:21

    ありがとうございます。$_POST['name']等でパラメータを受け取りにはどのようにすればよろしいでしょうか?宜しくお願いいたします。

    キャンセル

  • 2017/08/16 13:54

    回答を追記しました。が、お願いがあります。

    他の方の追記・修正依頼にもあります通り、ソースは```(バッククォート3つ)で囲って下さい。それだけで、質問文の見易さが全然、違います。後にこの質問を見る方がいるかもしれないので修正をお願いします。

    キャンセル

  • 2017/08/16 14:05

    charset の指摘はしてあげてほしいです。
    文字コードの指定無しで DB 使うのはナシかなぁと。

    キャンセル

  • 2017/08/16 14:38

    そこまで見てませんでした…
    回答を修正して、
    define('PDO_DSN', 'mysql:dbhost=localhost;charset=utf8mb4;dbname=' . DB_DATABASE);
    にしました。charsetは質問者さんの環境に合わせて貰えばと思います。

    キャンセル

  • 2017/08/16 22:10

    ありがとう、ございます。これを元に作業させていただきます。
    ためになる情報ありがとうございました。

    キャンセル

関連した質問

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

  • PHP

    20797questions

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

  • MySQL

    6000questions

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