为什么MySQLi会阻止我的页面的其余部分解析并停止我的PHP脚本?

时间:2014-12-12 09:51:30

标签: php mysql mysqli

我今天一直试图做一些数据库工作,当我意识到MySQLi一直在破坏我的页面时,我遇到了一些问题。请允许我解释一下。这就是我在Exd.php

上的服务器上的内容
<!DOCTYPE html>
<html>
    <head>
        <title>ExD</title>
    <!-- Metadata -->
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        <?php
            echo "Script begins here";
            $link = mysqli_connect('localhost', 'root', '<Password>','ExD');
            if (!$link) {
                die('Could not connect: ' . mysql_error());
            }
            echo 'Connected successfully';
            mysql_close($link);
            echo "Script ends here";
            ?>
    </body>
</html>

当我在Mac上的Chrome上请求此页面,或者甚至是在提供此文件的同一台计算机上的Chrome时,页面上的唯一输出来自我说脚本开始的第一个echo。如果我查看客户端页面的来源,则会显示(所有显示):

<!DOCTYPE html>
<html>
    <head>
        <title>ExD</title>
    <!-- Metadata -->
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        Script begins here

ExD 我在MySQL中创建的数据库,它包含一个名为&#39; Person&#39;列有&#39; id&#39;和&#39; name&#39; (它是调试的基本表。)

这是我的PHP.ini文件:ExD PHP.ini on PasteBin

如果你确实需要,我也可以提供我的phpinfo()。只是一个注意事项 - 我已经看过phpinfo()和所有MySQL相关的单元格(和MySQLi相关的单元格)都有为PHP实现它们的人的名字的值,所以我猜测这意味着他们正常工作并且已经启用。

为什么世界会发生这种情况?为什么MySQLi打破了这个页面?

编辑:我已成功取得进展。现在,我已经能够连接到数据库了,并且我已经成功连接了数据库&#39;我页面上的消息,但在打印到页面后立即再次中断,所以当我在Chrome中查看来源时,我看到:

<!DOCTYPE html>
<html>
    <head>
        <title>ExD</title>
    <!-- Metadata -->
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        Script begins hereConnected successfully

所以页面仍在破碎,但MySQLi正在工作,直到我拨打mysql_close($link);

我还对PHP.ini进行了以下更改:

extension_dir = "C:/PHP/ext"

extension=php_mysqli.dll(取消评论)

您可以再次访问我的网站以观看演示!我现在有点迷失了,为什么会发生这种情况。

编辑:非常感谢rack_nilesh注意到我正在调用错误的扩展方法!现在一切都正常。我很开心!

3 个答案:

答案 0 :(得分:1)

您已撰写mysqli_connect

所以mysql_errormysql_close分别为mysqli_errormysqli_close

同时确认密码是否正确并打开错误报告。

答案 1 :(得分:0)

我敢打赌你没有安装或启用mysqli扩展。查看http://php.net/manual/en/mysqli.installation.php

也做@Naruto说的话。

答案 2 :(得分:0)

如果您想使用mysql(不推荐),请将mysqli_connect更改为mysql_connect