2012-05-04 22 views
0

特に、私のmysql_query()関数が次のスニペットで動作しないのはなぜですか?MySQLクエリ呼び出しが失敗したのはなぜですか?

<?php 

$name = $_POST["name"]; 
$email = $_POST["email"]; 
$pw = $_POST["password"]; 
$cpw = $_POST["cpassword"]; 

if ($name && $email && $pw) 
{ 
    mysql_connect("localhost", "root", "") or die("We couldn't connect!"); 
    mysql_select_db("testsite"); 

    mysql_query("INSERT INTO users(name, email, password) VALUES('$name', '$email', '$pw'") or die(mysql_error()); 

    $registered = mysql_affected_rows(); 

    echo "$registered was inserted"; 
} 
else 
{ 
    echo "At least one value is empty"; 
} 

mysql_close(); 

?> 

エラーが返され、このでした:あなたはあなたのSQL構文でエラーが発生している

。右の構文は、関連するすべてのファイルがhereに位置していてライン1で「」

ディレクトリを近く を使用するため は、MySQLサーバのバージョンに対応していることを、マニュアルをご確認ください。これらのファイルはすべて、xampp/htdocs /の下のtestsiteディレクトリにあります。 xamppをインストールし、ブラウザでform.phpを実行する前に実行しました。私はform.phpを実行する前に "testsite" MySQLデータベースと "users"テーブルを作成しました。私は適切にすべての情報を入力したときに

The database and table exist.

しかし、にmysql_affected_rows()が-1を返しました。これは、データベースが適切に修正されていないと私に思い出させました。ご意見をお寄せいただきありがとうございます。

VALUES('$name', '$email', '$pw')" 

答えて

2

が欠落しています。

mysql_query("INSERT INTO `users`(`name`, `email`, `password`) VALUES('$name', '$email', '$pw')") or die(mysql_error()); 
3

変更この

VALUES('$name', '$email', '$pw'") 

あなたはValues句の終わりに決算括弧を逃したブラケット

+0

'mysql_query'呼び出しの終了括弧がありません。 – jprofitt

2

あなたのPOSTデータ内の単一引用符または二重引用に沿って送信することを決定した場合、私はまた、あなたが受け取る他の潜在的なエラーのことをあらかじめ警告するしたいと思います。あなたはいつもmysql注入を防ぐためにできることをしたいと思っています。そして、あなたは以下のコードを使って大きな飛躍を遂げることができます。

$name = mysql_real_escape_string($_POST["name"]); 
$email = mysql_real_escape_string($_POST["email"]); 
$pw = mysql_real_escape_string($_POST["password"]); 
$cpw = mysql_real_escape_string($_POST["cpassword"]); 

私は誠実な意図未満を有することができる誰かと、将来の任意の頭痛からあなたを救うためにしようとしていることを知ってください。

+0

ヘッドアップありがとう。 – stanigator

関連する問題