PHP脚本停止
你好老乡程序员,PHP脚本停止
我已经提出,查找数据库,如果登录已经存在,然后返回true或false的功能,这里是这个函数的主体:
public static function loginExiste($login)
{
$cnx = new GestionBD("localhost", "fnak", "root", "");
$login = mysql_real_escape_string($login);
$ret = $cnx->execRequete("SELECT COUNT(*) FROM clients WHERE Client_Login = '".$login."'");
$col = mysql_fetch_array($ret);
echo 2;
if ($col[0] > 0)
{
echo 3;
return true;
}
else
{
echo 4;
return false;
}
}
,这里是我如何调用该函数:
echo 1;
if (!ExecRequete::loginExiste($_POST['login']))
{
echo 5;
/*
echo '<center><p style="color:red;">
Erreur: Login existe déjà
</p></center>';
exit();
*/
}
echo 6;
现在你可以看到,我身边有一些散落echo语句,看看如何execu正在流动。结果我得到的每一次是这样的:
如果登录存在:123 如果它不存在:124
从结果我看到剧本return语句后立即停止执行。通常它应该是这样的:
1236或12456
这个最糟糕的是,考试期间,发生在我身上,这让我很苦恼,因为它没有任何意义可言。调试失去了我很多时间,我无法完成其他容易的部分..
任何人都可以看到为什么这种奇怪的行为发生在这里?
终于!我哪里出错了^^
重启功能从头开始后(如使用如果($登录==“A”)返回true;)我发现这个问题是在我GestionBD的析构函数类处理与mysql的连接。因为函数中的所有代码除了在return语句的最后都有效。
什么让我确定它是析构函数,是当我把$ cnx = null;之前我的echo 2;并且在回声之前停止执行。然后我注释掉析构函数,并根据需要运行一切。但我不知道什么是错在我的析构函数...
下面是它的样子:
function __destruct()
{
@mysql_close($this->$connexion);
}
现在,如果有人熟悉PHP OOP,他一定会发现错误马上..变量connexion是类中的成员变量。所以当我们用指针$来引用它时,我们需要把它放在没有$的地方(我恨你$,我或者忘记了你,或者当你不需要时:)
正确的析构函数是这样的:
function __destruct()
{
@mysql_close($this->connexion);
}
但这mysql_close功能肯定不是那么好做,它不会给任何错误信息,没有任何例外,它只是崩溃的引擎和叶你想知道为什么..
谢谢大家为你的答案和帮助,这真的很感激:)而且每个人的建议是,如果你得到任何奇怪的行为或错误消息在一个简单的返回true;检查你所有的本地对象的析构函数他们可能有罪,也 USE PDO不使用@
与调试时,因为它抑制任何错误的mysql函数;)
您可能希望删除mysql_close上的'@',以便在调试或开发期间不会特别抑制该错误。因为问题不会导致问题的答案,所以对问题的回答是积极的。错误发现在'GestionBD'上,而不是在提供的代码中 – 2012-02-01 18:25:35
现在有道理,我不知道'@',谢谢:) – 2012-02-01 18:36:44
我看不出任何明显错误与您的逻辑,但它可能是PHP发射没有被显示的错误。是否配置了error_reporting和display_errors/log_errors?顺便说一句,关于考试技巧的建议。如果你发现自己陷入某种困境,那就留下来,稍后再回来。如果你得到答案,他们将被标记,如果他们没有按顺序,这并不重要。 – GordonM 2012-01-28 18:17:13
yeh我已经添加了说明:error_reporting(E_ALL); ini_set('display_errors',true);在函数脚本和主函数中。我也把这个函数拿出来放在同一个脚本里,我试着用一个全局变量来输出这个值,但是执行永远不会超出这个函数的范围.. – 2012-01-29 16:25:32
总有[xdebug](http:// xdebug .org /)或[zend debugger](http://static.zend.com/topics/Zend-Debugger-Installation-Guide.pdf)来追踪这样的虚假问题。 – quickshiftin 2012-01-29 18:02:56