此代码有什么问题

|
class MyClass {

    private $db;

    // Constructor 
    function __construct() {
        $this->db = new mysqli(\'localhost\', \'root\', \'root\', \'Test_db\');
        $this->db->autocommit(FALSE);
    }

    // Destructor 
    function __destruct() {
        $this->db->close();
    }

    // Main method 
    function MyFun() {

        // Check for required parameters
        if (isset($_POST[\"name\"]) && isset($_POST[\"username\"]) && isset($_POST[\"password\"]) && isset($_POST[\"email\"])) {
        echo \"Before \\n\";
        $name = $_POST[\"name\"];
        $username = $_POST[\"username\"];
        $password = $_POST[\"password\"];
        $email = $_POST[\"email\"];
        $activation = 0;
        echo \"After \\n\";
            // tracking 
            $stmt = $this->db->prepare(\"INSERT INTO users (name, username, password, email,activation) VALUES (?, ?, ?, ?, ?)\");
            $stmt->bind_param(\"is\", $name, $username, $password, $email, $activation); //Line 95
            $stmt->execute();
            $stmt->close();

        }
输出: 之前 后 无效的请求 MAMP控制台:
[15-Apr-2011 15:09:10] PHP Warning:  mysqli_stmt::bind_param() [<a href=\'function.mysqli-stmt-bind-param\'>function.mysqli-stmt-bind-param</a>]: Number of elements in type definition string doesn\'t match number of bind variables in /Applications/MAMP/htdocs/Test/reg.php on line 95
数字相同,但我不知道为什么会出现此错误     
已邀请:
$stmt->bind_param(\"is\", $name, $username, $password, $email, $activation);
您的\“ definition \”字符串(\“ is \”)仅包含两个定义,整数和字符串...您应该在那里有5个。
$stmt->bind_param(\"sssss\", $name, $username, $password, $email, $activation);
... 例如 ...     
您的查询中只有五个
?
占位符,但是您正在尝试为查询添加六个值。     $ stmt-> bind_param(\“ is \”,$ name,$ username,$ password,$ email,$ activation); \“是\” $名称 $用户名 $密码 $ email $激活 您提供的格式仅包含2个定义,但必须包含5个定义才能匹配您的查询。试试
\"sssss\"
。     
\“ is \”是第六个变量,建议您删除此变量或在语句中添加字段名称:
$stmt->bind_param(\"is\", $name, $username, $password, $email, $activation);
从bind_param中删除:
$stmt = $this->db->prepare(\"INSERT INTO users (name, username, password, email,activation) VALUES (?, ?, ?, ?, ?)\");
$stmt->bind_param($name, $username, $password, $email, $activation);
或添加到字段名称:
$stmt = $this->db->prepare(\"INSERT INTO users (**is**, name, username, password, email,activation) VALUES (?, ?, ?, ?, ?)\");
$stmt->bind_param(\"**is**\", $name, $username, $password, $email, $activation);
要么     $ stmt = $ this-> db-> prepare(\“ INSERT INTO users(name,username,password,     电子邮件,激活)VALUES(?,?,?,?,?)\“);     $ stmt-> bind_param(\“ issss \”,$ name,$ username,$ password,$ email,$ activation);     

要回复问题请先登录注册