2011-01-09 14 views
-2

これは今日の私の3番目の質問ですので、私はばかだと思います。 は、ここに私のコードです:MySQLクエリのエラー

date_default_timezone_set("America/Los_Angeles"); 

include("mainmenu.php"); 

$con = mysql_connect("localhost", "root", "********"); 
if(!$con){ 
    die(mysql_error()); 
} 

$usrname = $_POST['usrname']; 
$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$password = $_POST['password']; 
$email = $_POST['email']; 

mysql_select_db("`users`, $con) or die(mysql_error()"); 

$query = ("INSERT INTO `users`.`data` (`id`, `usrname`, `fname`, `lname`, `email`, `password`) 
VALUES (NULL, '$usrname', '$fname', '$lname', '$email', 'password'))"); 

mysql_query('$query') or die(mysql_error()); 

mysql_close($con); 

echo("Thank you for registering!"); 
として、私は常にエラーが返さ取得

:あなたはあなたのSQL構文でエラーが発生している」;近くに「$クエリを使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください'ライン1 ヘルプ初心者で私は自分のモニターを刺すことを約だ

+0

NTOするmysql_query(「$クエリ」) –

+2

から非常に役立つタイトル – kenwarner

+0

笑君たちを引用符を削除しないで、私のnoobの質問 – Ken

答えて

4

1):

mysql_select_db("`users`, $con) or die(mysql_error()"); 

は次のようになります。

mysql_select_db("users", $con) or die(mysql_error()); 

今あなたがデータベース名として送っている文字列内のPHPコードを持っています。このラインで

2):

mysql_query('$query'); 

単一引用符を使用することは、文字列リテラル$queryはなく$queryと呼ばれる変数の内容より送信されます。 mysql_query($query)またはmysql_query("$query");

また、あなたが$queryを作成し、どこecho成功メッセージのいずれかを使用し、文字列を囲む括弧は不要です。

WITHIN $query、閉じ括弧が多すぎます。また、入力のいずれかをエスケープすることもできません。誰かがあなたのフォームに厄介なものを書く場合(一重引用符で囲まれたものなど)、クエリが壊れてしまいます。

+0

OMG! THANX SO MUCH! (あなたが私のことを言ったことはありません) – Ken

+1

-1この危険なコードでは、mysql_real_escape_stringまたはSQL-injectの問題を指摘しないため-1です。 – Johan

+1

私はそれを指摘した以外は... 3ヶ月前...それは答えの最後の文です。 –

1

するmysql_query。この行で(' $クエリ ')=>するmysql_query( "$クエリ")

2
mysql_query($query) or die(mysql_error()); 

$ query変数の前後に引用符がありません。

単一引用符( ')、二重引用符( ")のない間、あなたは変数を埋め込むことはできません。

1

SQLインジェクションホールを修正する方法

変更このコード

enter image description hereは私が

$usrname = $_POST['usrname']; 
$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$password = $_POST['password']; 
$email = $_POST['email']; 

ホラーコーディングこの

$usrname = mysql_real_escape_string($_POST['usrname']); 
$fname = mysql_real_escape_string($_POST['fname']); 
$lname = mysql_real_escape_string($_POST['lname']); 
$password = mysql_real_escape_string($_POST['password']); 
$email = mysql_real_escape_string($_POST['email']);