PHP 准备好的语句在网络服务器上不起作用

标签 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
}

准备好的语句在我的本地主机上的 XAMPP 上完美运行,但是当我将它们上传到我的网络服务器上时,登录后没有任何反应。它只是一个空白屏幕。如果这很重要的话,我的网络服务器正在 PHP 5.6 上运行。

最佳答案

仅供将来看到此内容的任何人使用。我发现我的主机不支持 get_result() 函数所需的 MYSQLnd。我只是用 fetch() 和 bind_result() 写了不同的代码。网上有很多解决方案示例。

关于PHP 准备好的语句在网络服务器上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41350453/

相关文章:

php - PDO 行数困惑

MySQL 表查找查询

php - 如何在 PDO(或 MySQLi)查询中正确处理关联数组?

javascript - 使用 PHP 和 Ajax 读取 txt 文件并将值插入数据库

php - 在 jQuery 脚本中使用 Php 值

php - 如何将 php 名​​称和坐标数组转换为 google map 点的 javascript 数组?

mysql - 如何在 mysqli 准备好的语句中安排事件

php - 无法获取记录以使用 PHP 插入到 mysql 数据中

php - 为什么这个 while 循环中的表达式会导致无限循环?

sql - sqlite-WITH子句中的预处理语句导致无限循环