人生のプチ美学を教えてください!!

現在、Flashのフォームで受け取った値をPHP経由でMySQLへデータを格納するシステムを作成しています。

現在、詰まっている点とは、Flashで送信したデータがMySQLまで到達できないというところです。
少し分析してみたところ、PHPを単独でブラウザにて開くと

"フィールドが取得できません。"

と出力されていました。
これは、

-----
<?php
$setsuzoku = mysql_connect("localhost", "*****", "*****");
if (! $setsuzoku) {
die ("データベースに接続できません");
}

if (! mysql_select_db ("test")) {
die ("データベースが取得できません");
}

mysql_query("INSERT INTO rank VALUES('".$HTTP_GET_VARS['nickname']."', ".$HTTP_GET_VARS['score']);
if (!$fd) {
die ("フィールドが取得できません。");
}

// 処理が終わったことを知らせる
print('OK');

-----
というプログラムで動かしていまして、『mysql_select_db ("test")』まで動作しているのではないかと思われます。
ですので、もしかしたらFlash以前にPHPとSQLの連携がうまくいっていないような気がするのですが…どうでしょうか?

Flashからの情報を送信するシステムである以上、PHPで表示すると必ずこのような形になるのでしょうか?

ちなみにMySQLには、必要なDatabaseとテーブルを作成しました。

問題の切り分けは一応してみましたが、間違っているかもしれません。何かご教授頂ければ幸いです。

よろしくお願いいたします。

A 回答 (2件)

>1064: 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 '' at line 1
これってSQLが間違ってるってエラーじゃないですか?

>実は、このような形で記述していませんでした。
>これは、xxxにフォームで入れた値を入力するような形でよろしいのでしょうか?

http://www.hogehoge.com/hoge.php
みたいに記述して確認しているなら

$HTTP_GET_VARS['nickname']
$HTTP_GET_VARS['score']

の両方が空文字になるのでSQL文が

INSERT INTO rank VALUES('',

となってしまいます。これはエラーですよね。
(閉じ括弧がないので値が渡ってきてもエラーです)

例えば
nicknameにabc
scoreに100
を送りたいなら
http://www.hogehoge.com/hoge.php?nickname=abc&sc …
の様に記述します。
(日本語を送るときはURLエンコードしないといけません)
    • good
    • 0

$fdがただの変数なら


$fd = mysql_query("INSERT INTO …略
とどこかで値を入れないとずっとtrueにはならないと思うのですが。

INSERTのSQLで失敗しているなら
mysql_error()でエラー文字列を取得できたはずなので
原因がわかると思います。

またはSQLをprintして確認してみてはどうでしょう?


>PHPを単独でブラウザにて開くと
GETで受け取っているならアドレスを
*.php?mickname=xxx&score=xxx
のような形式で記述していますか?


>Flashからの情報を送信するシステムである以上、
>PHPで表示すると必ずこのような形になるのでしょうか?
Flash→PHPでうまくいっているかどうかは
Flashから送ったデータをprintで確認してみればいいと思います。
print($HTTP_GET_VARS['nickname']);

この回答への補足

ご回答ありがとうございます。
返信が遅くなり、申し訳ありません。

---
mysql_error()とmysql_errno()の組み合わせで、エラーを出力してみました。
すると…

1064: 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 '' at line 1

と出ました。
最初の質問段階で記述しませんでしたが、環境は以下の通りです。

OS/Windows server 2003
Apache/2.0.59 (Win32)
PHP/4.4.7(※_SERVER["HTTP_ACCEPT_LANGUAGE"] ja)
MySQL/4.1.22-community-nt(sjis)

エラーメッセージを検索にかけたところ、文字コードが関係しているように思えますが、もしかしてsjisに統一できていないのでしょうか?
以前はVine環境でしたが、SQLからFlashへデータを送る段階で文字化けを起こし、sjis環境に統一する意味でWindows serverに切り替えた経緯があります。


>*.php?mickname=xxx&score=xxx
実は、このような形で記述していませんでした。
これは、xxxにフォームで入れた値を入力するような形でよろしいのでしょうか?


申し訳ありませんが、さらにご教授頂ければ幸いです。
よろしくお願い致します。

補足日時:2007/10/17 03:45
    • good
    • 0

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


おすすめ情報