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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

1回答

2196閲覧

ユーザー定義関数の使用について。

engineer_yagiko

総合スコア5

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

0クリップ

投稿2019/12/13 08:04

PHP

1<?php 2 3define('DB_HOST', 'localhost'); 4define('DB_USER', 'user'); 5define('DB_PASSWD', 'passwd'); 6define('DB_NAME', 'dbname'); 7 8define('HTML_CHARACTER_SET', 'UTF-8'); 9define('DB_CHARACTER_SET', 'UTF8'); 10 11$date = date('Y-m-d H:i:s'); 12 13$err_msg = array(); 14$data = array(); 15$result = ''; 16 17//db接続 18$link = get_db_connect(); 19 20//-------------POST通信での処理----------------------- 21if ($_SERVER['REQUEST_METHOD'] === 'POST') { 22 23 if (isset($_POST['name']) === TRUE && mb_strlen($_POST['name']) <= 20 && $_POST['name'] !== '') { 24 25 $name = $_POST['name']; 26 } else { 27 28 $err_msg[] = '名前は0文字、または20文字以上では登録できません!(23行)'; 29 } 30 31 if (isset($_POST['comment']) === TRUE && mb_strlen($_POST['comment']) <= 100 && $_POST['comment'] !== '') { 32 33 $comment = $_POST['comment']; 34 } else { 35 36 $err_msg[] = 'コメントが空白、0文字、または100文字以上では登録できません!(31行)'; 37 } 38 39 if (count($err_msg) === 0) { 40 41 insert_sql($name,$comment,$date); 42 } 43} 44//------------ここまでがPOST通信での処理-------------- 45 46$sql = "SELECT name, comment, date FROM bulletin_table"; 47 48if ($result = mysqli_query($link, $sql)) { 49 50 while ($row = mysqli_fetch_assoc($result)) { 51 52 $data[] = $row; 53 } 54} else { 55 56 $err_msg[] = '実行に失敗しました。'; 57} 58 59mysqli_free_result($result); 60close_db_connect($link); 61 62 63//DB接続関数の作成 64function get_db_connect() { 65 66 //コネクション取得 67 if (!$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWD, DB_NAME)) { 68 69 die('error: '.mysqli_connect_error()); 70 } 71 72 //文字コードセット 73 mysqli_set_charset($link, DB_CHARACTER_SET); 74 75 return $link; 76} 77 78//DB切断関数の作成 79function close_db_connect($link) { 80 81 mysqli_close($link); 82} 83 84//テーブルへデータを挿入 85function insert_sql ($name,$comment,$date) { 86 87 $sql = ''; 88 $sql = "INSERT INTO bulletin_table(name, comment, date) 89 VALUES ('".$name."','".$comment."','".$date."')"; 90 91 return mysqli_query($link,$sql); 92} 93 94?> 95<!DOCTYPE html> 96<html lang="ja"> 97<head> 98 <meta charset="utf-8"> 99 <title>ひとこと掲示板(ユーザー定義関数ver)</title> 100 <style> 101 .border { 102 103 padding-bottom: 10px; 104 border-bottom: solid 2px #000000; 105 } 106 </style> 107</head> 108<body> 109 <h1>ひとこと掲示板</h1> 110 <div class="border"> 111 <form method="post"> 112 <label>名前:<input type="text" name = "name" value=""></label> 113 <label>コメント:<input type="text" name = "comment" value=""></label> 114 <input type="submit" value="投稿"> 115 </form> 116 <?php foreach ($err_msg as $value) { ?> 117 <p><?php print $value; ?></p> 118 <?php } ?> 119 </div> 120 <ul> 121 <?php foreach ($data as $value) { ?> 122 <li><?php print htmlspecialchars($value['name'],ENT_QUOTES,"UTF-8"); ?> 123 <?php print htmlspecialchars($value['comment'],ENT_QUOTES,"UTF-8"); ?> 124 <?php print htmlspecialchars($value['date'],ENT_QUOTES,"UTF-8"); ?></li> 125 <?php } ?> 126 </ul> 127</body> 128</html> 129``` 130簡単な掲示板を作成しております。 131 132データベース接続 133テーブルへデータを挿入(INSERT) 134テーブルからデータを取得(SELECT) 135データベース切断 136「名前」の入力値をチェック 137「コメント」の入力値をチェック 138HTMLとして表示する文字をHTMLエンティティに変換する 139 140上記の処理をユーザー定義関数を利用し行いたいのですがデータをテーブルへ挿入する関数を作りましたが機能しません。 141returnで変数に代入するなど試しましたがエラーはなくなりませんでした。 142 143わかりやすいreturnの説明や機能しない場合のvar_dump()を使う位置などアドバイスをいただけると助かります。

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

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

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

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

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

maisumakun

2019/12/13 08:18

どのようなエラーが出ましたか?
m.ts10806

2019/12/13 10:52

returnの説明もvar_dumpの機能もPHPマニュアル読めばわかることも多いかと思います。
guest

回答1

0

mysqliは情報弱者には圧倒的に不利です
PDOの導入を検討してください

投稿2019/12/16 03:47

yambejp

総合スコア114883

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

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

engineer_yagiko

2019/12/16 06:46

検討してみます、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問