哦,我刚开始学习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中没有这样的文件或目录
致命错误: C:\xampp\htdocs\stckovrflw1\mysql.php中的第3行要求'1‘(包含_path=.;C:\xampp\php\PEAR’)
即使文件存在,也不会得到文件,而且拼写显然也不会不正确。而最令人惊奇的是,一旦我移除或死亡(),一切都像一个魅力。因为我是初学者,所以我不知道发生了什么。我认为or die()只是为了让开发人员或用户帮助查看确切的错误,但在这种情况下,它是导致错误本身的原因。
帮帮忙!
预先谢谢.)
P.S.:正如代码中提到的那样,我正在本地主机上运行。
发布于 2014-02-24 11:08:57
与require/require_once.相比,或具有更高的优先级因此php评估
('connect.php') or die("blah blah")在传递需要的结果之前。Or采用两个布尔操作数。('connect.php')计算为true,因此整个表达式为true
require true;
会被调用。
require以string作为参数,因此由php将真正的数据转换为1。
所以在你的情况下它变成了require 1
生成failed to open error的
在bugs.php.net https://bugs.php.net/bug.php?id=15438上报道的一个bug说:
因为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';
}发布于 2014-02-24 11:04:44
这是mysql_select_db而不是mysql_selectdb
顺便说一句,如果您已经开始学习php和mysql,最好使用mysqli而不是mysql来培训自己。
您不必在require行中使用die(),如果文件不存在,将自动抛出错误
FYI:
die()方法方便调试,是的!!当您想要停止某些循环或代码流的执行时,当您想分析作为输出得到的变量和不作为输出的变量时,这是正确的。
发布于 2014-02-24 11:13:18
<?php
require("connect.php")or die(mysql_error());
?>不管用。PHP首先计算表达式
("connect.php") or die(mysql_error())这句话永远都是真的。结果清单:
require true这不管用。您甚至不需要检查连接,因为您在connect.php中检查了这个连接。但是,双重检查并没有错,而且对将来的兼容性更好(例如,您可以更改您的实现并删除connect.php中的检查)。所以你可以用这个代替:
<?php
require("connect.php");
if(!$connect)
die(mysql_error());
?>https://stackoverflow.com/questions/21985850
复制相似问题