アプリ版:「スタンプのみでお礼する」機能のリリースについて

またお世話になります。
PHPからMySQLへデータをインサートしたいのですが、各サイトを参考にしながら試しているのですがどうにも上手くいきません。
ソースを見ていただけますでしょうか?

$con = mysql_connect("localhost","user","password")
or die("MySQLに接続できません。");

mysql_select_db('test');
$sql = "SET CHARACTER SET UTF8";
$result = mysql_query($sql);

$data1 = $HTTP_POST_VARS["inpdata1"];
$data2 = $HTTP_POST_VARS["inpdata2"];
$data3 = $HTTP_POST_VARS["inpdata3"];

$sql = 'INSERT INTO `tab1` (`abc`, `def`, `ghi`) VALUES (`$data1`,`$data2`,`$data3`);';
$result = mysql_query($sql);

print $data1; //ここでは通常にデータが表示されるので
print $data2; //データの受け渡しは問題ないはずですが。
print $data3;

mysql_free_result($result);
mysql_close($con);

A 回答 (2件)

$result = mysql_query($sql) or die(mysql_error());



としてデバッグしてみるといいですよ。

×$sql = 'INSERT INTO `tab1` (`abc`, `def`, `ghi`) VALUES (`$data1`,`$data2`,`$data3`);';
○$sql = "INSERT INTO `tab1` (`abc`, `def`, `ghi`) VALUES ('$data1','$data2','$data3')";

単純に、valuesの中で渡すデータはバッククォーテーションではなく
シングルクォーテーションです。フィールド名ではなくデータを
わたしたいのですから・・・。
$sql変数に代入する場合のくくりはダブルクォーテーションですね。
(変数を参照するため)

それと念のため、sqlのケツのセミコロンは取っておいた方がよいです。
    • good
    • 0
この回答へのお礼

環境も書かない(書き忘れた)失礼な質問に親切なお礼、ありがとうございます。
無事上手くいきました。

ただ
>それと念のため、sqlのケツのセミコロンは取っておいた方がよいです。

このケツのセミコロンはないとエラーになってしまいました。
付けてあって正解のようです。

ところでこのような質問はMySQL側でよろしいのでしょうか?
PHP側で質問するべきでしょうか?
この回答だけ頂いたら回答を締め切らせていただこうと思います。

お礼日時:2007/03/29 14:18

うーん、どっちなんでしょうね・・・


ま、マルチポストさえしなければどっちでもいいんじゃないですか?
私は両方ともこまめに見てますので、どちらでも
フォローできると思いますよ。

>ケツのセミコロン
説明不足ですみませんが、ケツのセミコロンとはSQL分のセミコロン
のことを言いたかったのです。
場合によってはこれをつけるとエラーになることがあります。

もちろんほんとのケツのセミコロンはPHPの文法上の区切り文字
なので必須です。
    • good
    • 0
この回答へのお礼

セミコロン、また私が勘違いしていたようですね。
理解できました、ありがとうございます。

マルチポストは確かにまずいですね。
今後も一連の質問は、とりあえずこちらのほうにさせていただこうと思います。

非常に簡単なものですが、なんとか作成しているデータベースも型になってきました。
同時にMySQLとPHPも少し分かってきたような気がします。
今後もぜひご指導お願いします。

お礼日時:2007/03/30 11:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!