我需要知道我刚刚运行的功能是否成功。以下是有问题的功能及其执行方式。
我知道如何通过在函数中设置变量并检查它是否存在来实现此目的,但不确定这是最佳实践。
//Update users function
function update($db, $fn, $ln, $email, $offers, $vlue, $responce)
{
$stmt = $db->prepare("insert into kkt (fName_765, lName_765, email_765, signup_765, kkt_resp_765, stamp_765) values (:fname, :lname, :email, :signup, NOW())");
$parameters = array(
':fname' => $fn,
':lname' => $ln,
':email' => $email,
':signup' => $offers);
$stmt->execute($parameters);
print $db->lastInsertId(); //show ID
return true;
}
//Test Attributes
$fn = 'test';
$ln = 'test';
$email = 'tesst@test,com';
$offers = '1';
try {
update($db, $fn, $ln, $email, $offers);
}
catch (PDOException $e) {
echo "no update there is a slight problem " . $e->getMessage();
}
如果不成功,我会使用try catch通过电子邮件通知自己,但是我应该把代码放在这里给用户显示,还是最好写一些其他内容以保持整洁?
感谢您的所有评论 - 最终的代码现在已经过CR:https://codereview.stackexchange.com/questions/21481/pdo-connection-prep-and-execute-in-there-own-functions
答案 0 :(得分:3)
在PHP中,你可以用三种不同的方式处理它们,它们都会被认为是好的,因为PHP本身都使用它们(这看起来确实令人困惑)。您可以在出错时返回false(并处理其返回结果):
function update($db, $fn, $ln, $email, $offers, $vlue, $responce) {
try {
...
} catch (PDOException $e) {
return false;
}
}
您可能会触发错误(并在错误处理程序中通过电子邮件通知自己):
function update($db, $fn, $ln, $email, $offers, $vlue, $responce) {
try {
...
} catch (PDOException $e) {
trigger_error("...", E_USER_WARNING);
}
}
或者您可以抛出自己的异常(并在捕获时发送电子邮件):
function update($db, $fn, $ln, $email, $offers, $vlue, $responce) {
try {
...
} catch (PDOException $e) {
throw new Exception("...");
}
}
这并不重要。但通常建议的是:
is_*
类型的函数)而不是错误时才使用bool返回值trigger_error
答案 1 :(得分:1)
您可以使用if(function())
检查功能是否成功执行。它返回true
或false
中的布尔标志。
if(update("test","test","test@test,com",1))
{
//successful
}
else
{
//callfunction2()
}
答案 2 :(得分:1)
我认为你可以在函数中使用try-catch:
function update($db, $fn, $ln, $email, $offers, $vlue, $responce)
{
$stmt = $db->prepare("insert into kkt (fName_765, lName_765, email_765, signup_765, kkt_resp_765, stamp_765) values (:fname, :lname, :email, :signup, NOW())");
$parameters = array(
':fname' => $fn,
':lname' => $ln,
':email' => $email,
':signup' => $offers);
try {
$stmt->execute($parameters);
print $db->lastInsertId(); //show ID
return true;
} catch(Exception $ex) {
//log, or pirint error message
//or return 0
return false;
}
}
答案 3 :(得分:1)
try {
$result=update($db, $fn, $ln, $email, $offers);
if(!$result)
throw new Exception("Query not succesful!");
}
catch (PDOException $e) {
mail("what","ever","you","want");
echo "no update there is a slight problem " . $e->getMessage();
}