首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中的连接错误

问PHP中的连接错误
EN

Stack Overflow用户
提问于 2014-02-24 11:02:14
回答 6查看 373关注 0票数 0

哦,我刚开始学习PHP和MySQL。一切都很顺利,直到这件事使我心潮澎湃。这就是问题所在。我在同一个目录中有两个php文件。

mysql.php->

代码语言:javascript
复制
<?php
require("connect.php")or die(mysql_error());
?>

connect.php--->

代码语言:javascript
复制
<?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.:正如代码中提到的那样,我正在本地主机上运行。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-02-24 11:08:57

与require/require_once.相比,或具有更高的优先级因此php评估

代码语言:javascript
复制
('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()是一种特殊的语言结构,所以它的参数不需要括号。在比较返回值时要小心。

代码语言:javascript
复制
<?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';
}
票数 1
EN

Stack Overflow用户

发布于 2014-02-24 11:04:44

这是mysql_select_db而不是mysql_selectdb

顺便说一句,如果您已经开始学习php和mysql,最好使用mysqli而不是mysql来培训自己。

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

FYI:

die()方法方便调试,是的!!当您想要停止某些循环或代码流的执行时,当您想分析作为输出得到的变量和不作为输出的变量时,这是正确的。

票数 1
EN

Stack Overflow用户

发布于 2014-02-24 11:13:18

代码语言:javascript
复制
<?php
require("connect.php")or die(mysql_error());
?>

不管用。PHP首先计算表达式

代码语言:javascript
复制
("connect.php") or die(mysql_error())

这句话永远都是真的。结果清单:

代码语言:javascript
复制
require true

这不管用。您甚至不需要检查连接,因为您在connect.php中检查了这个连接。但是,双重检查并没有错,而且对将来的兼容性更好(例如,您可以更改您的实现并删除connect.php中的检查)。所以你可以用这个代替:

代码语言:javascript
复制
<?php
require("connect.php");

if(!$connect)
    die(mysql_error());
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21985850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档