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

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

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

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

Q&A

2回答

1888閲覧

SQL テキスト入力

takashi5

総合スコア12

PHP

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

0グッド

0クリップ

投稿2020/03/15 09:08

編集2020/03/16 01:43

テキストに入力した値をtableに追加したいのですが、
データベースに保存されません。mysqli_query($link, $query)を行ったときにfalseが返る
原因が分かりません。VALUESのカッコ内の記述に問題があるのでしょうか。

よろしくお願いします。

イメージ説明

イメージ説明

PHP

1<?php 2$goods = ''; 3$price = ''; 4$goods_data =[]; 5$errors = []; 6$host = 'localhost'; 7$username = ''; 8$passwd = ''; 9$dbname = ''; 10$link = mysqli_connect($host, $username, $passwd, $dbname); 11 12if($link) { 13 mysqli_set_charset($link, 'utf8'); 14 if(isset($_GET['goods']) === true && isset($_GET['price']) === true) { 15 $goods = $_GET['goods']; 16 $price = $_GET['price']; 17 if($goods === '') { 18 $errors[] ='商品を入力してください'. "</br>"; 19 } 20 if($price === '') { 21 $errors[] ='価格を入力してください'. "</br>"; 22 } 23 if($goods !== '' && $price !== ''){ 24 if(count($errors === 0)){ 25 $query = 'INSERT INTO goods_table(goods_name, price) 26 VALUES(\''.$goods.'\',\''.$price.'\')'; 27 var_dump($query); 28 $result = mysqli_query($link, $query); 29 var_dump($result); 30  31 } 32 33 } 34 35 } 36 $query = 'SELECT goods_name, price FROM good_table 37 ORDER BY goods_id'; 38 $result = mysqli_query($link, $query); 39 while($row = mysqli_fetch_array($result)) { 40 $goods_data[] = $row; 41 } 42 43 mysqli_free_result($result); 44 mysqli_close($link); 45} 46 47?> 48<!DOCTYPE html> 49<html lang="ja"> 50<head> 51 <meta charset="UTF-8"> 52 <title>サンプル</title> 53 <style type="text/css"> 54 table, td, th { 55 border: solid black 1px; 56 } 57 table { 58 width: 200px; 59 } 60 </style> 61</head> 62<body> 63 <p><?php foreach($errors as $key => $string){ 64 print $string; 65 } ?> 66 </p> 67 <form method="get" action='./16-10.php'> 68 <label>商品名:<input type="text" name= "goods" value=""></label> 69 <label>価格:<input type="text" name="price" value=""></label> 70 <input type="submit" value="追加"> 71 </form> 72 <table> 73 <tr> 74 <th>商品名</th> 75 <th>価格</th> 76 </tr> 77<?php 78foreach ($goods_data as $value) { 79?> 80 81 <tr> 82 <td><?php print htmlspecialchars($value['goods_name'], ENT_QUOTES, 'UTF-8'); ?> </td> 83 84 85 <td><?php print htmlspecialchars($value['price'], ENT_QUOTES, 'UTF-8'); ?> </td> 86 87 88 </tr> 89 90<?php 91} 92?> 93 </table> 94</body> 95</html>

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

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

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

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

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

m.ts10806

2020/03/15 09:30

>プログラミング初学者なので、そのあたりもご配慮いただけますと、 非常にありがたいです。 「初学者」といっても色々段階がありますから、むしろこういうのは書かれない方が良いかと思います。 下手に制限すると的確な(または今後のためになる)アドバイスを得られなくなる可能性が高いですし、回答は当の質問者のためだけにあるわけではなく、同じような問題を抱えた誰かのためにもあるもの(資産・ナレッジ)なので、「自分専用の」という考え方はなるべく捨てましょう。 それなら「こういうことは理解している」とか「こういうことを調べた、試した」を書いてくれた方が回答する側としてはありがたいです。
takashi5

2020/03/16 00:27

今後の参考になりました。ありがとうございました。
m.ts10806

2020/03/16 00:35

質問は編集できますので、参考にするだけでなく、今この質問で適宜ご対応いただけたらと。
takashi5

2020/03/16 01:39

編集の仕方が分からなかったので。ご指摘ありがとうございます。
guest

回答2

0

この部分ですが、$value['goods_name'] や $value['price'] がデータベースに入ってる値なので、それだけ表示すれば十分です。その後 $goods や $price を表示してますが、これらはデータベースに追加するための値で、すでに追加し終わってるので、表示する必要はありません。

php

1 <td><?php print htmlspecialchars($value['goods_name'], ENT_QUOTES, 'UTF-8'); ?> 2 <?php if($goods !== '') { 3 print $goods; 4 } ?> 5 </td> 6 <td><?php print htmlspecialchars($value['price'], ENT_QUOTES, 'UTF-8'); ?> 7 <?php if($price !== '') { 8 print $price; 9 } ?> 10 </td>

というか、各変数にどんな値が入ってて、プログラムの流れがどうなって、それに応じて変数の値がどう変わるかということをちゃんと考えながらプログラムを書くことをお勧めしたいです。

投稿2020/03/15 09:21

hoshi-takanori

総合スコア7895

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

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

takashi5

2020/03/16 00:37

分かりました。ありがとうございます。
guest

0

まずはmysqliであってもprepareで処理するようにしてください
mysqliの特性をよくりかいできないなら利用者がおおいpdoに切り替えることも検討ください

投稿2020/03/16 01:47

yambejp

総合スコア114843

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

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

takashi5

2020/03/16 02:01

queryの記述しか教わっていなかったので。ユーザーの入力を利用する場合は、prepareで処理したほうがいいということでしょうか? ご回答ありがとうございました。
yambejp

2020/03/16 02:05

ユーザーが入力されたデータは全て汚染されている前提で SQL文に直接記載することはNGです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問