こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPでMySQLにデーターを追加するところで壁に当たってしまいました

PHPでMySQLにデーターを追加するところで壁に当たってしまいました。
PHP5.3&MYSQL5.1
1.フォームへ入力
2.確認画面
3.MySQLへデーター追加

1.form
<html>
<head><title></title></head>
<body>
<form method="post" action="conf.php">
<table>
<tr><th>番号</th><td><input type="text" name="id" /></td></tr>
<tr><th>タイトル</th><td><input type="text" name="title" /></td></tr>
<tr><th>テキスト</th><td><textarea name="cont" cols="40" rows="5" /></textarea></tr>
<tr><th>日付け</th><td><input type="text" name="update" size="10" /></td></tr>
</table>
<input type="submit" value="送信" /><input type="reset" value="リセット" />
</form>
</body>
</html>

2.確認画面
<html>
<head><title></title></head>
<body>
<table>
<tr><th>番号</th><td><?php echo htmlspecialchars($_POST["id"]) ?></td></tr>
<tr><th>タイトル</th><td><?php echo htmlspecialchars($_POST["title"]) ?></td></tr>
<tr><th>テキスト</th><td><?php echo htmlspecialchars($_POST["cont"]) ?></td></tr>
<tr><th>日付け</th><td><?php echo htmlspecialchars($_POST["update"]) ?></td></tr>
</table>
<form method="post" action="upld.php">
<input type="hidden" name="did" value="<?php echo htmlspecialchars($_POST["id"]) ?>" />
<input type="hidden" name="title" value="<?php echo htmlspecialchars($_POST["title"]) ?>" />
<input type="hidden" name="cont" value="<?php echo htmlspecialchars($_POST["cont"]) ?>" />
<input type="hidden" name="update" value="<?php echo htmlspecialchars($_POST["update"]) ?>" />
<input type="submit" value="登録" />
</form>
</body>
</html>

3.MySQLへデーター追加
<?php
$Con = mysql_connect("localhost","root","");
if ($Con == false) {dir ("MySQLの接続に失敗。");}
if (!mysql_select_db("phpdata",$Con)) {dir ("データーベース接続に失敗。");}
$sql = "insert into daimoku(id,title,cont,update)
values('".$_POST["id"]."','".$_POST["title"]."','".$_POST["cont"]."','".$_POST["update"]."')";//SQL文の作成
$res = mysql_query($sql) or die(mysql_error());//クエリの実行
mysql_close($Con);//切断
?>
<html>
<head>
<title></title>
</head>
<body>
<p>ご登録ありがとうございました。</p>
<a href="01.php">戻る</a>
</body>
以上のコードでデーターの追加が出来ません。
どなたか教えていただけないでしょうか?

投稿日時 - 2010-10-03 23:26:49

QNo.6225973

困ってます

質問者が選んだベストアンサー

回答2番に書いてありますが、よくわからなかったようなので、私からかみくだいて。

updateという列名はそのまま使っちゃ駄目なのです。特別な単語なので。
そこで、`update`という風に囲むか(シフト押しながら@だよ)、
列名を別のに変更する、例えばupdante、updowntown、upup、
xyzupdateとかね。そのときはテーブルの定義をいじるところからやってね。

私だったら最初からupdateなんて列名は付けないけどね。

投稿日時 - 2010-10-08 21:21:52

お礼

"sousin"にし再度コードを書きなおしてみたところ無事成功しました。
honoka-chaさん、かみくだいての説明大変よく分かりました。
ベストアンサーに選ばせて頂きます。

ありがとうございました!!

投稿日時 - 2010-10-14 17:12:56

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

update は予約語。予約語が追加されても問題ないよう、常にバッククォートで囲ってやると良い。

http://dev.mysql.com/doc/refman/5.1/ja/reserved-words.html
http://dev.mysql.com/doc/refman/5.1/ja/identifiers.html

http://jp2.php.net/manual/ja/function.mysql-real-escape-string.php


ちなみに、引用符で囲まれたものは文字列として扱われる。この場合 id の型が文字列なら何の問題もない。
http://dev.mysql.com/doc/refman/5.1/ja/string-syntax.html

MySQL(に限らず) は PHP とは別の文法を取る、PHP の事情などは関係ない。

投稿日時 - 2010-10-04 16:45:21

お礼

私の勉強不足で指定のサイトを見てみましたが今一良く分かりませんでした。

現在違ったコードで出来ないかを試していますのでそこでまだデータの追加が出来ないようなら再びコードを記入し質問したいと思います。

返信ありがとうございました。

投稿日時 - 2010-10-05 15:28:14

SQL文を画面に表示させてみては?
SQL文が正しいかどうか、チェックすればわかるのでは?

あと、サーバーのエラーを表示させるように、php.iniで設定してみては?

投稿日時 - 2010-10-04 00:05:28

補足

エラー内容を添えます。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'update) values('2','test2','This is Test2','2010-10-03')' at line 1

このエラー表示はどう言う意味なのかが分かりません。

投稿日時 - 2010-10-04 14:35:00