我有执行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;
答案 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;
}
}
此外,您确实应该学习mysqli
或POD
而不是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
。