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

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

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

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

Q&A

解決済

2回答

6043閲覧

PHP、INSERT文以降、変数に格納出来ません。

mccandless

総合スコア11

PHP

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

0グッド

0クリップ

投稿2016/02/28 04:44

お世話になります。

通常のフォームでポストされたデータをデータベース(MySQL)に格納したいのですが、
「INSERT文」以降$sqlに格納出来ません。
下記$flagの値が入らな状態です。
$g_name、$g_mail、$g_mesには正しく格納されるのですが。

OS:mac
phpのバージョン:php5.6.10
mampを使用しています。
phpmyadmin上ではデータを格納出来ます。

修正方法をご教示お願い致します。

<?php session_start(); include_once("config.php"); include_once("functions.php"); if($_SERVER['REQUEST_METHOD'] != "POST"){ //CSRF対策 setToken(); }else{ checkToken(); $g_name= h($_POST['g_name']); $g_mail= h($_POST['g_mail']); $g_mes= h($_POST['g_mes']); //var_dump($g_name); //var_dump($g_mail); //var_dump($g_mes); if(!empty($g_name) and !empty($g_mes)){ $sql= "INSERT INTO 'guestdata'('g_name', 'g_mail', 'g_mes', 'g_date')"; $sql .= "VALUES("; $sql .= "'" . $g_name . "',"; $sql .= "'" . $g_mail . "',"; $sql .= "'" . $g_mes . "',"; $sql .= "'" . date("Y/m/d H:i:s") . "'"; $sql .= ")" ; //$res = mysql_query($sql, $conn) or die ("データ追加エラー"); $flag = mysql_query($sql); print "flag=".$flag."<br>"; if($res){ echo "<p>書き込みありがとうございます。</p>"; } } }/* $_SERVER['REQUEST_METHOD */ ■config.phpは以下になります。 <?php $sv= "localhost"; $dbname= "guestbook"; $user= "dbuser"; $pass= "ynwa"; $conn = mysql_connect($sv , $user, $pass) or die ("接続エラー"); mysql_select_db($dbname) or die ("接続エラー"); error_reporting(E_ALL & ~E_NOTICE); ?>

■functions.phpは以下になります。

<?php //ユーザー定義関数 function h($s){ return htmlspecialchars($s, ENT_QUOTES, "UTF-8"); return stripslashes($s); return str_replace(array("\r\n", "\r", "\n"), "<br>", $s); return mysql_real_escape_string($s); } function setToken(){ if(!isset($_SESSION['token'])){ $_SESSION['token'] = sha1(uniqid(mt_rand(), true)); } } function checkToken(){ if(empty($_POST['token']) || $_POST['token'] != $_SESSION['token']){ echo "不正な投稿です!"; exit; } } ?>

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

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

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

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

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

guest

回答2

0

ベストアンサー

手元に環境がなく確認ができませんが、INSERT文でテーブル名やカラム名をシングルクォーテーションで囲む必要ありましたっけ?

$sql= "INSERT INTO 'guestdata'('g_name', 'g_mail', 'g_mes', 'g_date')";

これでいいのでは。
$sql= "INSERT INTO guestdata(g_name, g_mail, g_mes, g_date)";

投稿2016/02/29 04:51

ttyp03

総合スコア16998

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

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

mccandless

2016/02/29 10:10

ご指摘ありがとうございます。 テーブル名やカラム名は必要ないようでした。
mccandless

2019/08/28 11:30

遅くなりましたが、ご回答ありがとうございました。
ttyp03

2019/08/28 11:32

えっ!3年越しのありがとうw
guest

0

出来上がったsql文をチェックしてみてください。
文法がぐちゃぐちゃです。特に"や'のところです。

投稿2016/02/28 09:06

maiko0318

総合スコア876

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

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

mccandless

2016/02/29 10:11

ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問