2014-10-11 58 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)); 
}