【问题标题】:PHP,PDO,MySQLi function dont insert to databasePHP、PDO、MySQLi 函数不插入数据库
【发布时间】:2014-12-06 20:01:11
【问题描述】:

我编写了使用 pdo 向数据库插入信息并获得 XSS 保护的代码。 现在我几天看代码并没有看到使代码不插入所需信息的问题。 这是我的代码:

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);

谢谢。

【问题讨论】:

  • 检查$mysqli-&gt;error
  • 您的问题标题包含 PDO 和 MySQLi。我希望你没有同时使用这两个 API。另外,如果您的 id 列是 AI,请将 NULL 更改为 '' 并检查错误。

标签: php mysql web-services pdo mysqli


【解决方案1】:

使用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));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2015-02-27
    相关资源
    最近更新 更多