2012-05-01 16 views
-1

こんにちは私はPHpを初めて使いました。データベースに詳細を入力しようとしています。私はeventnameを入力しようとしています - ユーザーが入力した(POST)とログインしたユーザーのユーザー名。セッション変数をMySQLデータベースに挿入

私は、ユーザーのユーザー名を格納するためのセッションを作成している私が持っているコードは

$eventname=$_POST['eventname']; 
$myusername = $_SESSION['myusername'] 

$sql = mysql_query("INSERT INTO $tbl_nameVALUES('','$eventname','$_SESSION['myusername'])"); 

echo "You have been added to the event"; 

そのエラーを与えている$ SQL文のですか?どんな助けでも大変に感謝します。

ありがとうございます!

+1

...それはあなたを助けるホープ!私が立っている場所からの構文エラーのように見えます。 pollirataとMichealは両方とも質問に深く答えました。 – Malovich

+1

あなたのSQLクエリはSQLインジェクションに対して脆弱です。 – Lion

+3

古き良きmysql_ *関数を使って新しいコードを書いてください。彼らはもはや維持されておらず、コミュニティは[非推奨プロセス](http://news.php.net/php.internals/53799)を始めました。代わりに[prepared statement](http://en.wikipedia.org/wiki/Prepared_statement)について学び、[PDO](http://php.net/pdo)または[MySQLi](http:// php.net/mysqli)。あなたが学びたい人は[ここではPDO関連の非常に良いチュートリアルです](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 –

答えて

7

ここにはいくつかの潜在的な問題があります。

最初に、eventnameをSQLインジェクションから逃しませんでした。うまくいけば、myusernameが既に安全であると考えています。以前にフィルタリングされていない場合は、$_SESSION['myusername']mysql_real_escape_string()も使用してください。

$eventname = mysql_real_escape_string($_POST['eventname']); 

// Then you need space before VALUES and are missing a closing quote on $_SESSION['myusername'], which should be in {} 
$sql = mysql_query("INSERT INTO $tbl_name VALUES('','$eventname','{$_SESSION['myusername']}')"); 

最後に、ステートメントが動作するためには、それはあなたが$tbl_nameに正確に3つの列を前提としています。使用する列については明示的に指定する必要があります。 colname1, event_name, usernameの正しい列名に置き換えてください。 SQLの構文エラーの

$sql = mysql_query("INSERT INTO $tbl_name (colname1, event_name, username) VALUES('','$eventname','{$_SESSION['myusername']}')"); 

正確な位置はmysql_error()経由でチェックいくつかの基本的なエラーとのあなたに明らかにされます。

$sql = mysql_query(<your insert statement>); 
if (!$sql) { 
    echo mysql_error(); 
} 
+0

私は予期せぬT_VARIABLEのエラーメッセージの状態を記載した変更を加えました。これは構文エラーです。 – user1368371

+0

'$ eventname'行に予期しない' T_VARIABLE'があると、その行の構文エラーが発生している可能性があります。 –

+0

マイケルを正確に修正してください!みんなに助けてくれてありがとう! – user1368371

0

$tbl_nameVALUESの間にスペースが必要です。実際には、$_SESSION['myusername']の後に'のスペースが必要です。

そして、SQLインジェクションをルックアップします。

1

あなたのinsert文に'がありません。試してみてください

INSERT INTO $tbl_name VALUES('','$eventname','$_SESSION['myusername']') 
0

あなた$_SESSION配列のキーの周りの単一引用符を削除します。

$sql = mysql_query("INSERT INTO $tbl_name VALUES('', '$eventname', '$_SESSION[myusername])"); 
0

あなたは、エラーメッセージを与えた場合、それが最善だろう

$eventname=$_POST['eventname']; 
$myusername = $_SESSION['myusername']; 

$sql = mysql_query("INSERT INTO tbl_name VALUES('','$eventname','".$_SESSION['myusername'])."'"); 

echo "You have been added to the event"; 
関連する問題