duan4369 2013-08-23 14:10
浏览 30
已采纳

警告:将商店放入数据库时​​缺少参数错误

On my website , i want to register a user.

My HTML is:

<form method="post" action="register.php">
            <h1>Register</h1>
            <p>If you already have an account, please login</p>
            <div class="styled_select">
                <select name="title">
                    <option value="mr">Mr</option>
                    <option value="mrs">Mrs</option>
                    <option value="miss">Miss</option>
                </select>
            </div>

            <input type="text" name="first_name" placeholder="First Name" required><br>
            <input type="text" name="last_name" placeholder="Last Name" required><br>
            <div class="styled_select">
                <select name="sex" required>
                    <option value="male">Male</option>
                    <option value="female">Female</option>
                </select>
            </div>
            <input type="text" name="age" placeholder="Age" required><br>
            <input type="text" name="email" placeholder="Email" required><br>
            <input type="text" name="zipcode" placeholder="Zipcode" required><br>
            <input type="text" name="telephone" placeholder="Telephone" required><br>
            <input type="checkbox" class="checkbox" required> Agree to terms and conditions. <br>
            <input type="checkbox" class="checkbox" name="keep_informed"> Keep me informed on future promotions. <br>
            <input type="submit" name="" value="Register" class="submit_button"><br>
        </form>

My php function is:

class Register {

    public function register($title, $first_name, $last_name, $sex, $age, $email, $zipcode, $telephone, $keep_informed) {

        $title = mysql_real_escape_string($title);
        $first_name = mysql_real_escape_string($first_name);
        $last_name = mysql_real_escape_string($sex);
        $sex = mysql_real_escape_string($age);
        $email = mysql_real_escape_string($email);
        $zipcode = mysql_real_escape_string($zipcode);
        $telephone = mysql_real_escape_string($telephone);
        $keep_informed = mysql_real_escape_string($keep_informed);  

        $dbh = new PDO('mysql:host=localhost;dbname=testbox_new', 'root', '');

        $sql = 'insert into users (title, first_name, last_name, sex, age, email, zipcode, telephone, keep_informed)
        values ("'.$title.'", "'.$first_name.'", 
        "'.$last_name.'", "'.$sex.'", 
        "'.$age.'", "'.$email.'", 
        "'.$zipcode.'", "'.$telephone.'", 
        "'.$keep_informed.'")';

        if ($dbh->exec($sql)) {
            return true;
        } else {
            return false;
        }
    }
}

and i call the function with:

if (isset($_POST['title']) && isset($_POST['first_name']) 
                            && isset($_POST['last_name']) 
                            && isset($_POST['sex']) 
                            && isset($_POST['age']) 
                            && isset($_POST['email']) 
                            && isset($_POST['zipcode']) 
                            && isset($_POST['telephone'])) {

    if (isset($_POST['keep_informed'])) {
        $keep_informed = $_POST['keep_informed'];
    } else {
        $keep_informed = 0;
    }
    $register = new Register;
    $insert = $register->register($_POST['title'], $_POST['first_name'], $_POST['last_name'], $_POST['sex'], $_POST['age'], $_POST['email'], $_POST['zipcode'], $_POST['telephone'], $keep_informed);
    if ($insert == true) {
        header ('location: index1.php');
    } else {
        echo 'somethings gone wrong';
    }

}

The errors i get are the following:

Warning: Missing argument 1 for Register::register(), called in C:\xampp\htdocs\testboxegister.php on line 53 and defined in C:\xampp\htdocs\testboxegister.php on line 14

Warning: Missing argument 2 for Register::register(), called in C:\xampp\htdocs\testboxegister.php on line 53 and defined in C:\xampp\htdocs\testboxegister.php on line 14

Warning: Missing argument 3 for Register::register(), called in C:\xampp\htdocs\testboxegister.php on line 53 and defined in C:\xampp\htdocs\testboxegister.php on line 14

Warning: Missing argument 4 for Register::register(), called in C:\xampp\htdocs\testboxegister.php on line 53 and defined in C:\xampp\htdocs\testboxegister.php on line 14

Warning: Missing argument 5 for Register::register(), called in C:\xampp\htdocs\testboxegister.php on line 53 and defined in C:\xampp\htdocs\testboxegister.php on line 14

Warning: Missing argument 6 for Register::register(), called in C:\xampp\htdocs\testboxegister.php on line 53 and defined in C:\xampp\htdocs\testboxegister.php on line 14

Warning: Missing argument 7 for Register::register(), called in C:\xampp\htdocs\testboxegister.php on line 53 and defined in C:\xampp\htdocs\testboxegister.php on line 14

Warning: Missing argument 8 for Register::register(), called in C:\xampp\htdocs\testboxegister.php on line 53 and defined in C:\xampp\htdocs\testboxegister.php on line 14

Warning: Missing argument 9 for Register::register(), called in C:\xampp\htdocs\testboxegister.php on line 53 and defined in C:\xampp\htdocs\testboxegister.php on line 14

Notice: Undefined variable: title in C:\xampp\htdocs\testboxegister.php on line 16

Notice: Undefined variable: first_name in C:\xampp\htdocs\testboxegister.php on line 17

Notice: Undefined variable: sex in C:\xampp\htdocs\testboxegister.php on line 18

Notice: Undefined variable: age in C:\xampp\htdocs\testboxegister.php on line 19

Notice: Undefined variable: email in C:\xampp\htdocs\testboxegister.php on line 20

Notice: Undefined variable: zipcode in C:\xampp\htdocs\testboxegister.php on line 21

Notice: Undefined variable: keep_informed in C:\xampp\htdocs\testboxegister.php on line 22

Notice: Undefined variable: age in C:\xampp\htdocs\testboxegister.php on line 29

Notice: Undefined variable: keep_informed in C:\xampp\htdocs\testboxegister.php on line 31

Is there anyone who knows what the problem is ? I really can't figure it out!

Any help would be appreciated ;)

Thx!

  • 写回答

1条回答 默认 最新

  • drddx3115 2013-08-23 14:22
    关注

    This is the line that's causing the issue:

    $register = new Register;
    

    Your Register class doesn't have an explicit constructor. When you instantiate the object, PHP is checking to see if there's an old-style constructor in there - that is, a method that has the same name as the class. And it does - your register() method is being called then.

    To get around this, you can either add in a constructor method to your class, or re-name the register method.

    You can see the details of how constructors work in the manual: http://php.net/manual/en/language.oop5.decon.php

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了
  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能