【问题标题】:How to fix the issue: "localhost is currently unable to handle this request. HTTP ERROR 500"如何解决问题:“localhost 当前无法处理此请求。HTTP ERROR 500”
【发布时间】:2019-06-28 18:23:53
【问题描述】:

我有一个 PHP 脚本,它连接到使用 MAMP 设置的数据库。

但是它似乎无法连接到数据库。每次我尝试时,它都失败并显示以下消息:

此页面无法正常工作 localhost 当前无法处理此问题 要求。 HTTP 错误 500

<?php 

        $host = "localhost:8889";
        $dbusername = "root";
        $dbpassword = "root";
        $dbname = "HMSDb"; 

        //Create connection
        $conn = new mysqli_connect($host, $dbusername, $dbpassword, $dbname);

        $sql = "SELECT * FROM login;";
        $result = mysqli_query($conn, $sql);
        $resultCheck = mysqli_num_rows($result);

        if ($resultCheck > 0) {
            while ($rows = mysqli_fetch_assoc($result)) {
                echo $row['username'] . "<br>";
        } else {
                echo "Fail";
        }

?>

【问题讨论】:

  • 您可能遇到了数据库错误。您的代码未检查连接或查询是否成功。

标签: php localhost


【解决方案1】:

最好的起点是检查您的服务器日志。

它们的位置取决于您的系统是什么以及您如何安装网络服务器。谷歌应该帮助找到他们,error_log 就是你要找的。​​p>

但是这个特殊问题可能是由您的$host 引起的,包括端口。如果您需要指定非默认端口,请按照documentation 将其作为附加参数添加到mysqli_connect() 之后$dbname

编辑:

经过现场测试,我的error_log 表示原因是使用了new 关键字。将其从以下位置删除:

$conn = new mysqli_connect($host, $dbusername, $dbpassword, $dbname);

或改用mysqli();mysqli_connect() 是一个函数,而不是一个类,因此它不能用 new 关键字实例化。

错误:Uncaught Error: Class 'mysqli_connect' not found in /index.php

当然,正如 Amessihel 所说,也可以修复丢失的括号。

【讨论】:

    【解决方案2】:

    HTTP 500 代码代表服务器错误。正如 Tim 所说,请检查您的服务器日志。

    顺便说一句,您应该通过添加缺少的花括号 { 来修复您的 if 语句:

    if ($resultCheck > 0) {
        while ($rows = mysqli_fetch_assoc($result)) {
            echo $row['username'] . "<br>";
        }
    } // <- missing curly bracket
    else {
        echo "Fail";
    }
    

    【讨论】:

    • 缺少括号可能是 500 错误的原因
    【解决方案3】:

    您的代码将起作用。如果它像这样重写

         $host = "localhost";
            $dbusername = "root"; // username
            $dbpassword = "password"; // your password
            $dbname = "test";  // dbname
    
            //Create connection
            $conn = new mysqli($host, $dbusername, $dbpassword, $dbname);
    
            $sql = "SELECT * FROM fruit";
            $result = mysqli_query($conn, $sql);
            $resultCheck = mysqli_num_rows($result);
            echo "<ul>";
            if ($resultCheck > 0) {
                while ($rows = mysqli_fetch_assoc($result)) {
                    //echo $row['username'] . "<br>";
                    echo "<li> A ".$rows["name"]." is ".$rows["color"]. "</li>";
    
            }
            } else {
                    echo "Fail";
            }
        echo "</ul>";
    

    我用我的表测试代码。请在您的代码中进行相应的更改..

    一切顺利

    阿内斯

    【讨论】:

    • 你应该解释你做了什么改变。
    猜你喜欢
    • 2020-09-16
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 2022-06-24
    相关资源
    最近更新 更多