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

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

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

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

MySQL

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

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

解決済

php PDOを使ったMysqlへのINSERTでの、謎のWarning

yk202203
yk202203

総合スコア1

INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

MySQL

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

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

2回答

0評価

0クリップ

307閲覧

投稿2022/03/29 22:16

編集2022/03/31 15:04

タイトル通り、Warningを解決できないのでご助力願いたいです。
PHP初心者です。

あるhtmlファイルからformで登録したい変数を送信し、
php側でINSERT文を書いています

Warning: Use of undefined constant qry - assumed 'qry' (this will throw an Error in a future version of PHP) in /var/www/html/test_db_POST.php on line 18
(最下部にhtml出力載せています。)

環境

  • リストPHP Version 7.4.3
  • Apache/2.4.41 (Ubuntu)
  • mysql Ver 8.0.28-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))
  • mysqlnd 7.4.3

form送信側html(前後は省略)

html

<form action="test_db_POST.php" method="post"> <ul> <li> <label for="char">文字:</label> <input type="text" name="char2" value="" rows="10", cols="20"> </li> <input type="submit" value="送信"> <input type="reset" value="リセット"> </ul> </form>

test_db_POST.php INSERT文作成、送信

PHP

<body> <header> <h1>PHP</h1> </header> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <main> <pre> <?php // データベースと接続 include 'get_db_connection.php'; $db = get_db_connection(); $qry = 'INSERT INTO test_tbl (char2) VALUES (:char2);'; $stmt = $db->prepare(${qry}); $stmt->bindValue(':char2', $_POST["char2"], PDO::PARAM_STR); $stmt->execute(); echo "<h2>データ登録が完了しました</h2>"; ?> </pre> </main> </body>

get_db_connection.php(接続はうまくいきます。)

PHP

?php function get_db_connection(){ try{ $DB_DATABASE = 'household_management'; $DB_USERNAME = '省略'; $DB_PASSWORD = '省略'; $DB_OPTION = 'charset=utf8'; $PDO_DSN = "mysql:host=localhost;dbname=" . $DB_DATABASE . ";" . $DB_OPTION; $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]); echo "DB接続成功<br/>\n"; return $db; } catch(PDOException $e){ echo 'DB接続失敗' . $e->getMessage(); return NULL; } } ?>

test_db_POST.phpのページ遷移後、出力内容

html

<body> <header> <h1>PHP</h1> </header> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <main> <pre> DB接続成功<br/> <br /> <b>Warning</b>: Use of undefined constant qry - assumed 'qry' (this will throw an Error in a future version of PHP) in <b>/var/www/html/test_db_POST.php</b> on line <b>18</b><br /> <h2>データ登録が完了しました</h2> </pre> </main> </body>

mysqlのテーブル定義

sql

CREATE TABLE `test_tbl` ( `int1` INT(10) NOT NULL AUTO_INCREMENT, `char2` VARCHAR(50) NOT NULL DEFAULT '' COLLATE 'utf8mb4_0900_ai_ci', `date3` DATE NULL DEFAULT NULL, PRIMARY KEY (`int1`) USING BTREE ) COMMENT='基本的なクエリの確認\r\n接続確認、入力テスト、その他いろいろのためのテーブル\r\n' COLLATE='utf8mb4_0900_ai_ci' ENGINE=InnoDB AUTO_INCREMENT=20 ;

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

MySQL

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

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