【问题标题】:No database connection with no errors没有没有错误的数据库连接
【发布时间】:2017-04-19 15:02:14
【问题描述】:

我有 Ubuntu 16.10 x86_64 x86_64。我安装了 LAMP 以使用 PHP 编程并创建数据库。在我的 php 程序中,我想连接到我的本地数据库以使用表中任何行的数据创建一个表(在 HTML 中)。 问题是当我通过 firefox 打开 php 文件( localhost/file.php )时,浏览器不收取任何费用。如果在与数据库的连接过程中出现错误,它会在浏览器中打印一些东西。 代码如下:

<!DOCTYPE html>
<html>

<head><title> SQL & PHP </title></head>

<body>

<?php


$db = mysql_connect("localhost", "root", "password")
        or die ("Non riesco a creare la connessione");


mysql_select_db("scuola")
         or die ("Non trovo il DB");

$sql = "SELECT id_utente, nome_utente, password_utente, conta_pres FROM  utenti WHERE conta_pres <> 0";

$ris = mysql_query($sql) or die ("Query fallita!");

echo "<TABLE><TR><TH>ID utente <TH> Nome utente <TH>Password<TH>Contatore visite</TR>";

while ($riga= mysql_fetch_array($ris))
{
        echo ("<TR>");
        echo "<TD>"  . $riga["id_utente"];
        echo "<TD>"  . $riga["nome_utente"];
        echo "<TD>"  . $riga["password_utente"];
        echo "<TD>"  . $riga["conta_pres"];

}

mysql_close();
?>
</body>

</html>   

我检查了代码的语法(使用网站)并且没有问题,即使是因为我抄了一本书。我读到 mysql_connect 已被弃用,所以我用新的 mysqli_connect 替换它,但错误仍然存​​在:白页。我尝试放置 2 个回声,一个在连接功能之前,一个在其后。只有第一个回声会打印在屏幕上。我尝试在终端输入 sudo apt-get install php5-mysql 但出现错误: “php5-mysql”包没有运行安装

有人可以帮帮我吗?

【问题讨论】:

  • 不要使用 mysql_* 函数。 mysql_* 函数自 PHP 5.5.0 起已弃用,并从 PHP 7.0.0 起删除。将您的代码改为使用PDOmysqli
  • 如果您得到一个纯白页面,请检查您的服务器错误日志以了解原因。
  • 我认为 mysql_connect 在 5.6 之后已被弃用。所以它可能甚至不是 php-7 中的东西
  • 你安装mysql了吗?你需要先安装 mysql 然后 mysql 包到 php
  • 当您询问有关错误的问题时总是包括错误日志。在php 脚本的顶部添加error_reporting(E_ALL); ini_set('display_errors', 1);,它会返回什么?

标签: php mysql phpmyadmin php-7 ubuntu-16.10


【解决方案1】:

首先使用mysqli 而不是mysql

我想我找到了问题所在。当您调用 mysqli_select_db 时,它需要 2 个参数,而您只指定了一个。即使您设置了$db 数据库连接,您也需要指定要从哪个数据库中选择数据库名称。

所以mysqli_select_db($db, "scuola") 应该可以解决问题。

并在底部关闭连接,指定要关闭的连接。你的情况是:mysqli_close($db);

<!DOCTYPE html>
<html>

    <head><title> SQL & PHP </title></head>

    <body>

        <?php


        $db = mysqli_connect("localhost", "root", "password")
            or die ("Non riesco a creare la connessione");


        mysqli_select_db($db, "scuola") // see this line
            or die ("Non trovo il DB");

        $sql = "SELECT id_utente, nome_utente, password_utente, conta_pres FROM  utenti WHERE conta_pres <> 0";

        $ris = mysql_query($sql) or die ("Query fallita!");

        echo "<TABLE><TR><TH>ID utente <TH> Nome utente <TH>Password<TH>Contatore visite</TR>";

        while ($riga= mysql_fetch_array($ris))
        {
            echo ("<TR>");
            echo "<TD>"  . $riga["id_utente"];
            echo "<TD>"  . $riga["nome_utente"];
            echo "<TD>"  . $riga["password_utente"];
            echo "<TD>"  . $riga["conta_pres"];

        }

        mysqli_close($db); // see this line
        ?>
    </body>

</html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2016-02-22
    • 2014-08-11
    • 2018-11-21
    • 2013-05-06
    • 1970-01-01
    • 2018-05-04
    相关资源
    最近更新 更多