0

ここでバグを見つけることができません。このスクリプト全体が失敗していると考えてください。それでも、成功の兆候は見られません。
問題は、フォームが指定された詳細でヒットした場合です。つまり、ユーザー名、パスワード、および電子メールアドレスがmysqlデータベースに挿入されず、PHPで「詳細がデータベースに存在するかどうかを確認する方法」を確認できません。

   <?php
    ob_start();
    $host="localhost"; // Host name 
    $username="root"; // Mysql username 
    $password=""; // Mysql password 
    $db_name="cosmos"; // Database name 
    $tbl_name="members"; // Table name

    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB");




    // Define $myusername and $mypassword and $mail
    $user=$_POST['myusername'];
    $pass=$_POST['mypassword'];
    $user = stripslashes($user);
    $pass = stripslashes($pass);
    $user = mysql_real_escape_string($user);
    $pass = mysql_real_escape_string($pass);
    $pass = md5($pass);
    $mail=$_POST['email'];

    $sql = "INSERT INTO `cosmos`.`members` (`id`, `username`, `password`, `email id`) VALUES (NULL, \'$user\', \'$pass\', \'$mail\'), (NULL, \'\', \'\', \'\');";
    $result=mysql_query($sql);
    echo "Pass!"; //dont know how to verify :)
    ob_end_flush();
    ?>

よろしくお願いします。これを修正するか、新しいものを提供してください。

4

5 に答える 5

1

一重引用符をエスケープしないでください。

$sql = "INSERT INTO `cosmos`.`members` (`username`, `password`, `email id`) VALUES ('$user', '$pass', '$mail');";

また、これを行うことを忘れないでください:

$mail = mysql_real_escape_string($_POST['email']);
于 2010-08-28T15:06:20.097 に答える
0

何かが入ったかどうかを調べるには、mysql_insert_id()を使用します。

于 2010-08-28T15:05:52.133 に答える
0

データ引用符をエスケープして「;」を削除しないでください 最後に:

$sql = "INSERT INTO `cosmos`.`members` (`id`, `username`, `password`, `email id`) VALUES (NULL, '$user', '$pass', '$mail')";

クエリが機能したかどうかをテストするには、次を追加します。

if(mysql_error()) {
die('There was a problem inserting the data into the database');
}
于 2010-08-28T15:07:03.450 に答える
0

** email id**本当にあなたのデータベースフィールドですか?

してください$mail = mysql_real_escape_string($mail);

自動インクリメントキーを使用していて、制約が正しく設定されている場合は、挿入が成功したかどうかを確認するには、mysql_insert_id()を使用します。

selectステートメントを実行し、ユーザー名に特定の文字のみを許可することを事前に確認することをお勧めします。

この部分を削除することができます、それはあなたのログインシステムを台無しにするだけかもしれません。とにかくmysql_real_escape_stringで文字列をエスケープしています:

$user = stripslashes($user);
$pass = stripslashes($pass);
于 2010-08-28T15:07:58.620 に答える
0

挿入を確認するには、次の手順を実行します。

$result=mysql_query($sql) or die("INSERT failed: " . mysql_error());

それが機能した場合、スクリプトはそれ自体を殺しません。制約違反(ユーザー名が重複している?)がないことを確認するなど、他のチェックを行う必要がある場合は、次のようにします。

$result = mysql_query($sql);
if (mysql_error() === 1022) {
   $errmsg = 'Sorry, username already exists'; // or whatever you want the message to be
}

完全なエラーコードリストはここに文書化されています。

于 2010-08-28T15:11:38.143 に答える