0

OKヘルプ..私の登録ページはローカルサーバーで機能しましたが、オンラインのときに2つのmysql行が無効であると言っています..オンラインになるとなぜ変更されるのですか? 貼り付けられたコードはすべて関連しています。何らかの理由でトランザクションが気に入らない..そしてメールチェックのmysqlビット

include 'Connect.php'; //Connects to database
//When form is submit:-
if(isset($_POST['submit']))
{         
                        // On submit, retrieve table values for php.                 
                        $Firstname = mysql_real_escape_string($_POST['firstname']);
                        $Surname = mysql_real_escape_string($_POST['surname']);
                        $Password = mysql_real_escape_string($_POST['password']); 
                        $PasswordCheck = mysql_real_escape_string($_POST['passwordcheck']); 
                        $Email = mysql_real_escape_string($_POST['email']); 
                        $EmailCheck = mysql_real_escape_string($_POST['emailcheck']); 

                    //CHECKS. 
                    //Check username is available by retrieving any same values from the DB table.          
                    $CheckEmailAvailable = mysql_query("SELECT * FROM 'user_details' WHERE Email = '$Email'");
                    echo $CheckEmailAvailable;
                    // $result = mysql_query("SELECT * FROM $tbl WHERE Email='$email' and LoginPassword='$password'");
                    $Results = mysql_fetch_array($CheckEmailAvailable);

                    //If Username field is blank.
                    if($Email == null )
                    {               
                        echo "You must enter an email address.";
                        $url = htmlspecialchars($_SERVER['HTTP_REFERER']);
                        echo "<br/><br/>";
                        echo "<a href='$url'>Click Here To Return</a>";
                        die();                      
                    }

                    //If RESULTS is any value other than NULL, die.
                    if($Results != null )
                    {               
                        echo "Email already taken. Please try another.";
                        $url = htmlspecialchars($_SERVER['HTTP_REFERER']);
                        echo "<br/><br/>";
                        echo "<a href='$url'>Click Here To Return</a>";
                        die();                  
                    }

                    //If Password and PasswordCheck fields in reg do not match, die.
                    if($Password != $PasswordCheck) 
                    {
                        echo "The passwords you have entered do not match. Please try again.";
                        $url = htmlspecialchars($_SERVER['HTTP_REFERER']);
                        echo "<br/><br/>";
                        echo "<a href='$url'>Click Here To Return</a>";
                        die();
                    }

                    //If Password field is NULL (i.e. blank) die.
                    if($Password == Null)
                    {
                        echo "Your password must not be blank.";
                        $url = htmlspecialchars($_SERVER['HTTP_REFERER']);
                        echo "<br/><br/>";
                        echo "<a href='$url'>Click Here To Return</a>";
                        die();
                    }

                    //If Email and EmailCheck are not equal, die.
                    if($Email != $EmailCheck)
                    {                                                                        
                        echo "The email addresses you have entered do not match. Please try again.";
                        $url = htmlspecialchars($_SERVER['HTTP_REFERER']);
                        echo "<br/><br/>";
                        echo "<a href='$url'>Click Here To Return</a>";
                        die();

                    }


                    //ELSE add data to DB.
                    else
                    {
                    //BEGIN TRANS
                    mysql_query("BEGIN TRAN");

                    //TABLE ADD.
                    $sql=mysql_query("INSERT INTO `user_details` (`Firstname`, `Surname`, `Email`, `Password`) VALUES ('$Firstname', '$Surname', '$Email', '$Password')")
                    or mysql_query("ROLLBACK TRAN") . die(mysql_error("Error registering, the database may be down, please try again later."));


                    //COMMIT transaction, to ensure data is added properly.
                    mysql_query("COMMIT TRAN");
                    header( 'Location: RegSucc.php' ) ;
                    }   
                } ?>
              <html> 
            <!--Registration Form-->
            <form name="form1" method="post" style="margin-left: 28%" action="Register.php">
                <table width="100%" border="0" cellpadding="3" cellspacing="1">
                <tr>
                    <td colspan="3"><strong>Register Account</strong></td>
                </tr>
                <tr>
                    <td style="width: 83px">First Name:</td>
                    <td>:</td>
                    <td><input name="firstname" type="text"/></td>
                </tr>
                <tr>
                    <td style="width: 83px">Surname:</td>
                    <td>:</td>
                    <td><input name="surname" type="text"/></td>
                </tr>
                <tr>
                    <td style="width: 83px">Email Address:</td>
                    <td>:</td>
                    <td><input name="email" type="text"/></td>
                </tr>
                <tr>
                    <td style="width: 83px">Email Address Confirmation:</td>
                    <td>:</td>
                    <td><input name="emailcheck" type="text"/></td>
                </tr>
                <tr>
                    <td style="width: 83px">Password:</td>
                    <td>:</td>
                    <td><input name="password" type="password"/></td>
                </tr>
                <tr>
                    <td style="width: 83px">Verify Password:</td>
                    <td>:</td>
                    <td><input name="passwordcheck" type="password"/></td>
                </tr>
                <tr>
                    <td style="width: 83px">&nbsp;</td>
                    <td>&nbsp;</td>
                    <td><input type="submit" name="submit" value="Register"/></td>
                </tr>
                </table>
            </form>
4

3 に答える 3

1

クエリ

SELECT * FROM 'user_details' WHERE Email = '$Email'

無効です。テーブル名を示すときは、バッククォートを使用することをお勧めしますが、引用符を使用しても機能しません。

SELECT * FROM `user_details` WHERE Email = '$Email'

ローカルホストでは、引用符で機能するように設定されている場合があります。ただし、これは「想定」されている方法ではなく、サーバーのインストールが異なる場合があります。話の教訓:近道をとったり、醜いコードを使用したりしないでください。テーブル名または列をバックチェックすることを忘れないでください。PHPショートタグなどを使用しないでください。

于 2012-05-17T10:58:51.363 に答える
0

この行を変更

$CheckEmailAvailable = mysql_query("SELECT * FROM 'user_details' WHERE Email = '$Email'");

$CheckEmailAvailable = mysql_query("SELECT * FROM user_details WHERE Email = '".$Email."'");

問題は、オンラインで別のサーバーに移動したときです (Windows で開発していると推測できます [MySQL では大文字と小文字が区別されません]、オンライン サーバーは Linux です [MySQL では大文字と小文字が区別されます])。

文字列に評価および解析する変数が含まれている場合、その文字列を含む二重引用符内でその変数名を一重引用符で囲むことは、ほとんどの場合あまり信頼できません。(個人的な経験から)最良のアプローチは、連結を行うことです。

于 2012-05-17T11:17:29.257 に答える
0
$sql=mysql_query("INSERT INTO `user_details` (`Firstname`, `Surname`, `Email`, `Password`) VALUES ('$Firstname', '$Surname', '$Email', '$Password')")

する必要があります

$sql=mysql_query("INSERT INTO user_details (Firstname, Surname, Email, Password) VALUES ('$Firstname', '$Surname', '$Email', '$Password')")

また

SELECT * FROM 'user_details' WHERE Email = '$Email'

する必要があります

SELECT * FROM user_details WHERE Email = '$Email'

それでおしまい...

于 2012-05-17T11:06:17.790 に答える