2011-12-06 5 views
1

フォームからエントリを読み込み、対応するデータテーブルを更新するだけでなく、ログインしたユーザのユーザ名を添付することになっている次のビットのPHPがありますが、更新する。mySQL_queryテーブルを更新しない

$Date = $_POST["Date"]; 
$Description = $_POST["Description"]; 
$Hour = (float)$_POST["Lat"]; 
$Min = (float)$_POST["Lon"]; 
$Username = $_SESSION['username']; 
mysql_connect("localhost", "dbusername", "dbpass"); 
mysql_select_db("dbname",$connect) or die("Unable to select database"); 

$sql = ("INSERT INTO Table (Date, Description, Hour, Min, Username) 
VALUES ($Date, $Description, $Lat, $Lon, $Username)"); 

if (!mysql_query($sql)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "1 record added"; 

mysql_close($con); 

echo $Date; 
echo $Description; 
echo $Hour; 
echo $Min; 
echo $Username; 

あなたは、単一引用符でクエリの入力変数を同封していない任意の助け

+0

エラーメッセージが表示されますか? – rdlowrey

+0

いいえ私はされていない、新しい行がデータベースに作成されていない主な問題 – MadMoney

+0

'echo $ sql;'の結果とmysqlクエリの結果を投稿できますか? 'SHOW CREATE TABLE tbl_name'ここで 'tbl_name'はあなたのテーブルの名前ですか? –

答えて

4

のために事前にありがとうございます。あなたは、クエリの失敗にmysql_error()と呼ばれている

$sql = ("INSERT INTO Table (Date, Description, Hour, Min, Username) 
    VALUES ('$Date', '$Description', '$Lat', '$Lon', '$Username')"); 

は、おそらく、それは最初の日付の入力値の近くに構文エラーを印刷しました。

mysql_real_escape_string()の変数をmysql_real_escape_string()でエスケープしてから、SQLインジェクション攻撃から身を守る必要があります。

$Date = mysql_real_escape_string($_POST["Date"]); 
$Description = mysql_real_escape_string($_POST["Description"]); 
// You might want to check sane bounds for these float values 
// in addition to casting them as floats 
$Hour = (float)$_POST["Lat"]; 
$Min = (float)$_POST["Lon"]; 
// Hopefully $Username is already sane, but escape to be safe 
$Username = mysql_real_escape_string($_SESSION['username']); 

mysql_select_db()を呼び出して、2番目のパラメータはオプションであり、そして実際にあなたのコード内で$connectを定義していません。私はあなたが意味を疑う:

$connect = mysql_connect("localhost", "dbusername", "dbpass"); 
mysql_select_db("dbname",$connect) or die("Unable to select database"); 
+0

このようにする必要がありますか? $ Date = mysql_real_escape_string($ _ Post( "Date")) 別の表現を使用する必要がありますか?速い応答ありがとう – MadMoney

+0

@MadMoney私はそれをすべて上に追加しました。 –

+0

私は、コードを更新し、 日のテスト値を走っ:2012年12月11日 説明:例 時間:10分 : :50 とログインしているユーザーExampleUser ウェブサイトは私に次のエラーが返されました エラー:SQL構文にエラーがあります。行2で '、10、50、'の近くで使用する正しい構文についてはMySQLサーバのバージョンに対応するマニュアルをチェックしてください。 これはfloatの問題を表していますか?もう一度、この問題を解決するのを手伝ってくれてありがとう。私はこの種のものでとても失われています。 – MadMoney

0

あの、ここに偉大な提案がたくさんいますが、それを掲載されたコードと1つの明白な問題があります。あなたは、クエリを記述するときに、それぞれ$緯度および$経度としてそれらの値を参照している、しかし... $時間と、それぞれ$分という名前のPHP変数へのポストから

$Hour = (float)$_POST["Lat"]; 
$Min = (float)$_POST["Lon"]; 

を緯度と経度の値を代入していますあなたが実際にLAT $または$ロンに値を代入、まだあなたは、クエリのパラメータにその値を割り当てたいん投稿のコードでどこにも....

$sql = ("INSERT INTO Table (Date, Description, Hour, Min, Username) 
VALUES ($Date, $Description, $Lat, $Lon, $Username)"); 

。本質的には、存在しないクエリで変数を呼び出すことになります。

関連する問題