PHP准备好的语句不适用于webserver

时间:2016-12-27 18:39:04

标签: php mysql prepared-statement

您好我的网站上有以下代码存在问题:

<?php
session_start();
include '../databaseConnector.php';

$uid = mysqli_real_escape_string($connector, $_POST['uid']);
$pwd = mysqli_real_escape_string($connector, $_POST['pwd']);


$stmt = $connector->prepare("SELECT * FROM nutzer WHERE uid=?");
$stmt->bind_param("s", $username);

$username = $uid;
$stmt->execute();

$result = $stmt->get_result();

$row = mysqli_fetch_assoc($result);
$hash_pw = $row['pwd'];
$dehash = password_verify($pwd, $hash_pw);

if($dehash == 0)
{
    header("Location: ../loginscreen.php?error=pwwrong");
    exit();
}else{

    $stmt2 = $connector->prepare("SELECT * FROM nutzer WHERE uid=? AND pwd=?");
    $stmt2->bind_param("ss", $username2, $password2);

    $username2 = $uid;
    $password2 = $hash_pw;

    $stmt2->execute();    

    $result = $stmt2->get_result();
    $stmt->close();

    if(!$row =$result->fetch_assoc()) 
    {
        echo "Your username or password is incorrect!";
    } else{
    $_SESSION['id'] = $row['id']; 
    $_SESSION['uid'] = $row['uid']; 
    $_SESSION['email'] = $row['email']; 
    $_SESSION['first'] = $row['first'];
    $_SESSION['last'] = $row['last'];
}

header("Location: ../loginscreen.php"); // go to page after signing in
}

准备好的语句在我的localhost上完全适用于XAMPP但是当我在我的网络服务器上传它们时,登录后没有任何事情发生。它只是一个空白屏幕。我的网络服务器在PHP 5.6上运行,如果这很重要的话。

1 个答案:

答案 0 :(得分:0)

仅限任何将来会看到这一点的人。我看到我的主机不支持get_result()函数所需的MYSQLnd。我只是用fetch()和bind_result()写了不同的东西。网络上有很多解决方案示例。