哦,我刚开始学习 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 连接到其他脚本时,它会出现以下错误:
警告:要求(1):无法打开流:第 3 行 C:\xampp\htdocs\stckovrflw1\mysql.php 中没有这样的文件或目录
fatal error :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.:我也在代码中提到的本地主机上运行。
最佳答案
or 的优先级高于 require/require_once。因此 php 计算
('connect.php') or die("blah blah")
在将结果传递给 require 之前。 Or
采用两个 bool 操作数。 ('connect.php') 的计算结果为 true
因此整个表达式为真并且
要求为真;
被调用。
require
将字符串作为参数,因此 true 会被 php 强制转换为 1。
所以在你的情况下它变成了require 1
生成打开失败错误
bugs.php.net 上报告的错误 https://bugs.php.net/bug.php?id=15438说:
"Because include() is a special language costruct, parentheses are not needed around its argument. Take care when comparing return value.
<?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';
}
关于php - PHP 中的连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21985850/