PHP或死亡以及if else条件特性

时间:2013-09-07 17:37:24

标签: php mysql if-statement

我有执行mysql_query()的功能,然后做其他一些事情。 我希望只有在第一个成功的情况下才能执行另一个mysql_query()

这是函数

function myFunction($qtext)
{
  mysql_query($qtext) or die(mysql_error() . "\n");
  //do some more stuff
  return true;
}

我正在调用该函数并尝试使用if else条件检查它是否失败...

if(!myFunction($query_text))
{
  echo "first query failed";
}
else
{
  mysql_query($query_text1) or die (mysql_error() . "\n");
}

这似乎在第一个查询通过时有效,但如果第一个查询失败,则转到or die并返回mysql_error()文本,条件中的echo "first query failed";行永远不会达到。

理想情况下,id喜欢能够使用mysql_error文本提醒用户但没有or die,所以我可以在条件中运行更多代码。

非常感谢任何有关行为解释的帮助。 感谢。

P.S。 我是初学者......我不确定我是否在函数中正确使用return true;

3 个答案:

答案 0 :(得分:4)

您总是在函数中返回true - 如果您在false语句中进行检查,则还需要返回if()

function myFunction($qtext) {

    // run the query
    $sql = mysql_query($qtext);

    // see if there was a result (or whatever you're checking)
    if(mysql_num_rows($sql) > 0) {
        // do some more stuff
        return true;
    } else {
        return false;
    }
}

此外,您确实应该学习mysqliPOD而不是mysql,因为mysql已弃用。除非您正在测试,否则我还建议您不要使用die()。建立一个错误处理函数 - 它实际上非常简单,并且可以优雅地处理错误,而不是突然杀死脚本并使用户烦恼。您也不希望将错误消息直接打印到浏览器,因为它可能会损害您网站的安全性。 :)

只是一个FYI:我使用数据库类并像这样运行我的查询。它快速而干净。

if($db->get_results("SELECT email FROM users WHERE email='".$db->escape($email)."'")) {
    return true;
} else{
    return false;
}

答案 1 :(得分:0)

为防止“或死”发生,请将其替换为return false:

function myFunction($qtext)
{
    $result = mysql_query($qtext);
    if ($result === false)
    {
        return false;
    }
    //do some more stuff
    return true;
}

这样你以后的检查将会起作用,并且条件将会触发。您不必使用“或死”,这是为您要暂停所有执行的情况保留的。

答案 2 :(得分:0)

die()立即杀死剧本。如果您在其中调用die(),该函数将永远不会返回任何值,您将永远无法执行其他查询。 die()调用后,只有实例化对象的析构函数仍在运行,并且存在一些限制。

如果您希望在查询失败后继续执行操作,则必须永远不要致电die()。相反,只需检查mysql_query()返回FALSE是否为Tim建议。请注意===运算符,这对于正确的错误检查很重要。

如果您仍想打印die()之类的错误,请改用print()echo