首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php注册mysql不是有效资源

php注册mysql不是有效资源
EN

Stack Overflow用户
提问于 2012-05-17 18:50:51
回答 3查看 121关注 0票数 0

好的,help..my注册页面在本地服务器上工作,但是现在它说两行mysql当它的online..why时是无效的,当它上线时它会改变吗?粘贴的代码都是相关的。出于某种原因,它不喜欢transaction..and的电子邮件检查MySQL位

代码语言:javascript
复制
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>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-17 19:06:18

代码语言:javascript
复制
$sql=mysql_query("INSERT INTO `user_details` (`Firstname`, `Surname`, `Email`, `Password`) VALUES ('$Firstname', '$Surname', '$Email', '$Password')")

应该是

代码语言:javascript
复制
$sql=mysql_query("INSERT INTO user_details (Firstname, Surname, Email, Password) VALUES ('$Firstname', '$Surname', '$Email', '$Password')")

也是

代码语言:javascript
复制
SELECT * FROM 'user_details' WHERE Email = '$Email'

应该是

代码语言:javascript
复制
SELECT * FROM user_details WHERE Email = '$Email'

就这样..。

票数 0
EN

Stack Overflow用户

发布于 2012-05-17 18:58:51

查询

代码语言:javascript
复制
SELECT * FROM 'user_details' WHERE Email = '$Email'

无效。在表示表名时,最好使用反引号,但使用引号是行不通的!

代码语言:javascript
复制
SELECT * FROM `user_details` WHERE Email = '$Email'

在您的本地主机上,它可能被设置为使用引号。然而,这不是它“应该”的方式,服务器的安装可能会有所不同。这个故事的寓意是:不要走捷径或使用丑陋的代码。不要忘了给表名或列加上反标记,不要使用PHP快捷标签,等等。

票数 1
EN

Stack Overflow用户

发布于 2012-05-17 19:17:29

更改此行

代码语言:javascript
复制
$CheckEmailAvailable = mysql_query("SELECT * FROM 'user_details' WHERE Email = '$Email'");

代码语言:javascript
复制
$CheckEmailAvailable = mysql_query("SELECT * FROM user_details WHERE Email = '".$Email."'");

问题是,当你转移到另一个在线服务器时(我可以猜到你是在Windowswhich上开发的,它在MySQL中不区分大小写,而你的在线服务器在MySQL中是大小写敏感的

如果字符串包含要计算和解析的变量,则在包含该字符串的双引号内使用单引号将该变量名括起来在大多数情况下是不太可靠的。(根据个人经验)最好的方法是进行连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10634298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档