【问题标题】:Connection Error in PHPPHP中的连接错误
【发布时间】:2014-02-24 11:02:14
【问题描述】:

哦,我刚开始学习 PHP 和 MySQL。一切都很顺利,直到这件事让我想起了。 这是问题所在。 我在同一个目录中有两个 php 文件。

mysql.php--->

<?php
require("connect.php")or die(mysql_error());
?>

connect.php--->

<?php
error_reporting(0);
$connect=mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("phpacademy")or die(mysql_error());
echo"Connected!";
?>

问题在于,每当我直接运行 connect.php 脚本时,它都能正常工作。 但是当我运行 mysql.php 连接到另一个脚本时,它给出了以下错误:

警告:require(1):打开流失败:C:\xampp\htdocs\stckovrflw1\mysql.php 第 3 行没有这样的文件或目录

致命错误:require(): Failed opening required '1' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\stckovrflw1\mysql.php on line 3

即使文件存在并且拼写显然不正确,它也没有获取文件。 最令人惊奇的部分是,一旦我删除 or die() ,一切都会像魅力一样发挥作用。 由于我是初学者,我不知道发生了什么。我认为 or die() 只是为了帮助开发人员或用户查看确切的错误,但在这种情况下,它本身就是导致错误的原因。

帮忙!!!

提前谢谢...:)

P.S.:我也在 localhost 上运行,如代码中所述。

【问题讨论】:

  • 就在您的require 行之前,添加echo getcwd();,这样您就可以看到您当时所在的目录。可能connect.php的路径不对。
  • 很好地检查了目录。没错!!!

标签: php mysql connection database-connection


【解决方案1】:

or 的优先级高于 require/require_once。因此php评估

('connect.php') or die("blah blah")

在将结果传递给 require 之前。 Or 接受两个布尔操作数。 ('connect.php') 计算结果为true,因此整个表达式为真,并且

require true;

被调用。

require 将字符串作为参数,因此 php 将 true 强制转换为 1。

所以在你的情况下它变成了require 1

生成failed to open error

在 bugs.php.net https://bugs.php.net/bug.php?id=15438 上报告的错误说:

"因为 include() 是一种特殊的语言结构,所以括号不是 需要围绕它的论点。比较返回值时要小心。

<?php
// won't work, evaluated as include(('vars.php') == 'OK'), i.e. include('')
if (include('vars.php') == 'OK') {
    echo 'OK';
}

// works
if ((include 'vars.php') == 'OK') {
    echo 'OK';
}

【讨论】:

  • 哇!谢谢回复。我认识了很多新事物。并通过将这一行替换为: (require("connect.php"))or die(mysql_error());
【解决方案2】:

这是 mysql_select_db 而不是 mysql_selectdb

顺便说一句,如果你已经开始学习 php 和 mysql,最好让自己使用 mysqli 而不是 mysql

进行培训

你不必在 require 行中使用 die(),如果文件不存在 PHP 会自动抛出错误

仅供参考:

die() 方法在调试时派上用场是的!当您想停止执行某些循环或代码流时,当您想分析哪些是作为输出获得的变量以及哪些是您没有获得的变量时,这是正确的

【讨论】:

  • 感谢您的回复。我更正了 _db 代码并感谢您增强我的知识...:)
【解决方案3】:
<?php
require("connect.php")or die(mysql_error());
?>

不起作用。 PHP 首先计算表达式

("connect.php") or die(mysql_error())

而且这个表达式总是正确的。结果是:

require true

这不起作用。您甚至不需要检查连接,因为您在 connect.php 中检查了这一点。但是双重检查并没有错,它对未来的兼容性更好(例如您可以更改您的实现并删除co​​nnect.php中的检查)。所以你可以改用这个:

<?php
require("connect.php");

if(!$connect)
    die(mysql_error());
?>

【讨论】:

    【解决方案4】:

    error_reporting(0);

    $connect=mysql_connect("localhost","root","") 或 die(mysql_error());

    mysql_selectdb("phpacademy",$connect)or die(mysql_error());

    echo“已连接!”;

    【讨论】:

      【解决方案5】:

      你需要设置你的 PHP.INI 很明显你的包含路径设置为默认值,即 (include_path='.;C:\xampp\php\PEAR')

      您的 PHP 配置正在“C:\xampp\php\PEAR”中寻找文件,但该文件不存在。 试试 set_include_path() (参考:www.php.net/set_include_path)

      <?php
      set_include_path('C:\xampp\htdocs\stckovrflw1\');
      require("connect.php")or die(mysql_error());
      ?>
      

      【讨论】:

        【解决方案6】:

        mysql_selectdb("phpacademy",$connect)or die(mysql_error());

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-21
          • 2014-07-07
          • 1970-01-01
          • 2014-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-30
          相关资源
          最近更新 更多