PHP注册脚本不起作用

时间:2015-06-15 19:06:24

标签: php mysql database

我已经设置了一个允许用户登录和注册的简单网站。我正在使用MySQL数据库将登录详细信息存储在表的列中。我将提供更多详细信息,但基本上,我已经使登录页面正常工作,它正确连接到数据库并登录或通知用户他们的登录详细信息无效。我的问题是注册页面不会注册用户。我不是非常擅长PHP,但我很不错,我能够使登录页面工作,我已经做了研究,无法弄清楚为什么注册页面不起作用。

我用来创建数据库的代码:

    CREATE TABLE `users` (
`id` INT NOT NULL auto_increment ,
`username` VARCHAR( 20 ) NOT NULL ,
`password` VARCHAR( 20 ) NOT NULL ,
`fullname` VARCHAR( 20 ) NOT NULL ,
`email` VARCHAR( 20 ) NOT NULL,
`ip` VARCHAR( 20 ) NOT NULL,
PRIMARY KEY ( `id` )
)​

代码我曾经连接到数据库并注册:(这很麻烦而且很简单,请记住,我所要做的就是让它正确地注入数据​​库,一旦我知道了,我可以轻松添加更多)

仅供参考,为了这篇文章的目的,我将连接到MySQL服务器的实际细节更改为假的东西。对我来说,我有真正的细节,它确实成功连接,登录脚本工作,而不是注册脚本。问题不在于它不会连接,只是它不会将用户提交的信息注入表“users”中的相应列。另外,我使用按下提交按钮的if语句来删除部分,等等,因为这些parets与问题无关。

<?php session_start(); ?>
    <?php
        ob_start();
        //Defining server variables
        $host ="000webhost.com";
        $username ="username1";
        $password ="pass1";
        $db_name = "database1";
        $tbl_name ="users";

        // 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 register variables 
         $myusername=$_SESSION['myusername']; 
         $mypassword=$_SESSION['mypassword'];
         $myemail=$_SESSION['myemail'];
         $myname=$_SESSION['myname'];
         $myip=$_SERVER['REMOTE_ADDR'];


         $sql="INSERT INTO users (username,password,fullname,email,ip)VALUES('$myusername','$mypassword','$myname','$myemail','$myip')";
         $_SESSION['registersuccess'] = "Registration success"
         header('location:index.php');
         ob_end_flush();
    ?>
   ?>​

我显然做错了,因为当我在我的MySQL查询上运行这个代码而不是它注入到表中但是当我尝试使用php而不是它时。不确定我做错了什么,这就是我需要帮助的地方。在此先感谢,任何帮助将非常感激。

3 个答案:

答案 0 :(得分:0)

我复制了PHP documentation中的示例。 但是请记住,不要使用mysql库使用mysqli或PDO。

<?php
    $result = mysql_query($sql);
    if (!$result) {
        die('Invalid query: ' . mysql_error());
    }  
    mysql_close();  
?>

答案 1 :(得分:0)

1。您应该使用面向对象的MySQL

answer why

  

主要原因:自PHP 5.5.5以来,MySQL已被弃用

$mysqli = new mysqli($host, $username, $password, $db_name);

documentation

2。错误的查询?

INSERT INTO users (username,password,fullname,email,ip)VALUES('$myusername','$mypassword','$myname','$myemail','$myip')

我认为,这是由VALUES字

周围缺少空格引起的

您也忘了执行查询

3。打印错误

您可以按

打印查询错误
  

MySQL(&lt; PHP 5.5.0)

mysql_error()
  

MySQLi(&gt; = PHP 5)

$mysqli->error

答案 2 :(得分:0)

修复了行尾并添加了查询,这是你的工作代码好先生:

<?php 
 session_start();
 ob_start();

 // Connect to server and select databse.
 mysql_connect("000webhost.com", "username1", "pass1")or die("cannot connect"); 
 mysql_select_db("database1")or die("cannot select DB");

 // Define register variables 
 $myusername=$_SESSION['myusername']; 
 $mypassword=$_SESSION['mypassword'];
 $myemail=$_SESSION['myemail'];
 $myname=$_SESSION['myname'];
 $myip=$_SERVER['REMOTE_ADDR'];


 mysql_query("INSERT INTO users (username,password,fullname,email,ip)VALUES('$myusername', '$mypassword', '$myname', '$myemail', '$myip')");
 $_SESSION['registersuccess'] = "Registration success";
 header('location:index.php');
 ob_end_flush();
?>

请不要忘记首先清理您的输入。