我是否需要为该准备好的语句使用$ stmt = $ conn-> prepare?

时间:2019-02-09 15:47:06

标签: php mysqli prepared-statement

我准备好的语句的当前语法不正确,其中我:(INSERT ...?,?,?)

我尝试从不同的示例中复制语法,但是似乎我尝试越多,越会破坏登录系统。 我有一些矛盾的示例,并且不确定哪种语法是正确的语法。我需要在插入之前使用$ stmt = $ conn-> prepare吗?

// create preprepared statement
$sql = "INSERT INTO `user` (username, password, email) VALUES (?, ?, ?)";

// check if sql statement is correct
if ($stmt = mysqli_prepare($connection, $sql)) {

    // Add the variables to the stmt
    mysqli_stmt_bind_param($stmt, "sss", $param_username, $param_hashed_password, $param_email);
    $param_username = $username;
    $param_password = $hashed_password;
    $param_email = $email;

    // Attempt to execute the stmt
    if(mysqli_stmt_execute($stmt)) {
        // If statement executed
        $_SESSION["username"] = $username;
        header("location: login.php");

目前还没有在我的数据库中插入任何值,并且用户注册失败。

编辑:

$ password = $ _POST ['password'];

$ hashed_pa​​ssword =密码哈希($ password,PASSWORD_DEFAULT);

我刚发现这可能是错误地使用了password_hash吗?

1 个答案:

答案 0 :(得分:1)

class FlowerFetcher { func getFlowers(callback: ([Flowers])->()) {} } class FlowerViewModel { private var flowerService: FlowerFetcher? init(flowerService: FlowerFetcher?) {} } -简而言之,不!但是,您必须使用Do i need to use "$stmt = $conn->prepare" for this prepared statement?方法来实际生成prepare,它必须在实际尝试执行prepared statement之前完成,并且将其分配给变量是明智的,这样您就可以根据成功/失败来分叉程序逻辑。

我的偏好是执行以下操作-使用INSERT块并在各个阶段使用返回值或变量来确定是否抛出有意义的(?)异常以帮助调试-例如,您可以执行此操作

try/catch