2014-10-11 68 views
1

我使用pdo将信息插入数据库并获得XSS保护。 现在我会看几天的代码,并没有看到使代码无法插入请求信息的问题。 Here`s我的代码:PHP,PDO,MySQLi函数不插入数据库

if ($register = $mysqli->prepare("INSERT INTO `accounts`(`id`, `username`, `email`, `password`, `salt`, `fullname`, `birthdate`, `gender`, `secure question`, `secure answer`, `asked`, `answered`, `lastlogin`) VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")) { 
        $register->bind_param("ssssssddsdds", $username, $email, $password, $random_salt, $fullname, $birthdate, $gender, $question, $answer, $z, $z, $lastlogin); 
        // Execute the prepared query. 
        if (! $register->execute()) { 
         echo "אירעה שגיאה"; 
         $register->close(); 
        }else{ 
        echo 'אתם נרשמתם בהצלחה!. לחצו <a href="http://shaloti.com/users/login/">כאן</a>';} 
        $register->close(); 
       } 

和连接代码:

$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE); 

谢谢。

+0

检查'$ mysqli-> error' – 2014-10-11 23:18:30

+0

你的问题的标题检查错误包含PDO和库MySQLi。我不希望这两个API一起使用。另外,如果你的'id'列是AI,把NULL改为''''并检查错误。 – 2014-10-11 23:48:45

回答

0

使用mysqli_affected_rows得到插入的行数,如果任何函数调用失败,使用mysqli_error

$sql = "INSERT INTO `accounts`(`id`, `username`, `email`, `password`, `salt`, `fullname`, `birthdate`, `gender`, `secure question`, `secure answer`, `asked`, `answered`, `lastlogin`) VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
if ($register = $mysqli->prepare($sql)) { 
    $register->bind_param("ssssssddsdds", $username, $email, $password, $random_salt, $fullname, $birthdate, $gender, $question, $answer, $z, $z, $lastlogin); 
    // Execute the prepared query. 
    if (!$register->execute()) { 
     echo "אירעה שגיאה"; 
     die("execute() failed: ". mysqli_error($mysqli)); 
    } 

    if(mysqli_affected_rows($register) > 0){ 
     echo 'אתם נרשמתם בהצלחה!. לחצו <a href="http://shaloti.com/users/login/">כאן</a>'; 
    }else{ 
     echo 'Did not inser any row'; 
    } 
}else{ 
    die("prepare() failed: ". mysqli_error($mysqli)); 
}