使用php的用户注册表单中的错误

时间:2011-05-19 17:36:27

标签: php mysql

我正在尝试执行以下操作,但我有此错误

它不存储在我的数据库中

DB name = job,table login,attributes:loginId,loginname,loginpassword

  <html>
<head>
    <?php
    error_reporting(E_ALL);
    ?>
    <?php
    $link = mysql_connect('localhost', 'root', '123456');
    echo "from DB";
    mysql_select_db('job', $link);
    ?>
    <?

    class user {

        private $userId;
        private $username;
        private $password;

        public function getUsername() {
            return $this->username;
        }

        public function setUsername($username) {
            $this->username = $username;
        }

        public function getUserId() {
            return $this->userId;
        }

        public function setUserId($userId) {
            $this->userId = $userId;
        }

        public function getPassword() {
            return $this->password;
        }

        public function setPassword($password) {
            $this->password = $password;
        }

        function __construct() {

        }

    }
    ?>
</head>
<body>
    <form action="" method="POST" >
        username :<input type="text" size="30" name="username" >
        password: <input type="password" size="30" name="password">
        <input type="submit" value="singup!" name="submit" />
    </form>
    <?php

    function addNewuser($user, $link) {
        global $userModel;
        echo "$user->getUsername()";
        $query = sprintf("INSERT INTO login ('loginname','loginpassword') values('%s' ,'%s')",
                        $user->getUsername(),
                        $user->getPassword()
        );

        $generatedId = mysql_insert_id($link);
        mysql_query($query, $link);

        echo "AFTER ADD FUNCTION";


        $query2 = sprintf("SELECT loginname FROM login WHERE loginname='%s' AND loginpassword='%s'",
                        $user->getUsername(),
                        $user->getPassword());

        $result = mysql_query($query2, $link);
        echo "$result";
        while ($row = mysql_fetch_array($result)) {
            echo $row['loginname'];
        }
    }

    if (isset($_POST['submit'])) {
        $user = New User();
        $username = $_POST['username'];
        $password = $_POST['password'];

        $user->setUsername($username);
        $user->setPassword($password);

        addNewuser($user, $link);
        echo "add done ! ";



        mysql_close($link);
    }
    ?>

</body>

3 个答案:

答案 0 :(得分:1)

您的插入查询语法错误。应该是:

    $query = sprintf("INSERT INTO login (loginname,loginpassword) values('%s' ,'%s')",
                    $user->getUsername(),
                    $user->getPassword()
    );

另外请阅读有关SQL注入的信息,因为您的代码容易受到攻击。

答案 1 :(得分:0)

PHP区分大小写。

将其修复为:

if (isset($_POST['submit'])) {
    $user = new user();
    ...

还要确保在检查代码时启用了PHP错误,因为当前的实现应该在该行引发错误

答案 2 :(得分:0)

根据你的问题,

DB name = job , table login , attributes : loginId , loginname , loginpassword

我认为你的代码在这一点

$query = sprintf("INSERT INTO login ('loginname','loginpassword') values('%s' ,'%s')",
                        $user->getUsername(),
                        $user->getPassword()
        );

缺少loginID属性,您可以将其更改为

$query = sprintf("INSERT INTO login (loginId, loginname, loginpassword) values('','%s' ,'%s')",
                            $user->getUsername(),
                            $user->getPassword()
            );

它应该工作。请记住在查询字符串中删除单引号:)