向PHP MYSQL函数添加If / else错误/成功消息

时间:2009-09-06 23:48:45

标签: php mysql

我想知道如何在此功能结束时添加成功或失败消息

function InsertIntoDB($field1, $field2, $field3, $field4, $field5, $field6, $field7, $field8, $field9){
$sql = "INSERT INTO `caches` ( `url` ,  `username` ,  `password` ,  `cachename` ,  `lat` ,  `long` ,  `message` ,  `notes` ,  `tags`  ) VALUES(  '{$field1}' ,  '{$field2}' ,  '{$field3}' ,  '{$field4}' ,  '{$field5}' ,  '{$field6}' ,  '{$field7}' ,  '{$field8}' ,  '{$field9}'  ) "; 
mysql_query($sql) or die(mysql_error());
}

我喜欢它在成功时返回“OK”,并在失败时返回“FAIL”。

5 个答案:

答案 0 :(得分:3)

您不应该将“OK”和“FAIL”等消息硬编码到函数中作为其可能的返回值,这在本地化应用程序的灵活性方面有点可怕。你应该返回一个布尔值并处理该函数之外的消息。

如果你从应用程序的其他地方调用该函数,那么测试返回的字符串就没什么意义了,你只关心发生了什么而不是返回消息的语义。如果你决定改变'失败'怎么办?以'不成功'为例?您最终将不得不更改依赖于函数返回的所有其他代码。为什么不做这样的事情:

function InsertIntoDB($field1, $field2, $field3, $field4, $field5, $field6, $field7, $field8, $field9){
     $sql = "INSERT INTO `caches` ( `url` ,  `username` ,  `password` ,  `cachename` ,  `lat` ,  `long` ,  `message` ,  `notes` ,  `tags`  ) VALUES(  '{$field1}' ,  '{$field2}' ,  '{$field3}' ,  '{$field4}' ,  '{$field5}' ,  '{$field6}' ,  '{$field7}' ,  '{$field8}' ,  '{$field9}'  ) "; 
     return mysql_query($sql);
}

if(InsertIntoDB(...)) {
    echo 'Success!';
} else {
    echo 'Fail!';
}

然后在您的应用程序的其他地方,您将不需要:

if(InsertIntoDB(...) == 'SUCCESS!') {
    ...
}

但是:

if(InsertIntoDB(...)) {
    ...
}

或:

if(!InsertIntoDB(...)) {
    ...
}

答案 1 :(得分:0)

function InsertIntoDB($field1, $field2, $field3, $field4, $field5, $field6, $field7, $field8, $field9){
$sql = "INSERT INTO `caches` ( `url` ,  `username` ,  `password` ,  `cachename` ,  `lat` ,  `long` ,  `message` ,  `notes` ,  `tags`  ) VALUES(  '{$field1}' ,  '{$field2}' ,  '{$field3}' ,  '{$field4}' ,  '{$field5}' ,  '{$field6}' ,  '{$field7}' ,  '{$field8}' ,  '{$field9}'  ) "; 
$result = mysql_query($sql);
if($result) return "OK";
else return "FAIL";
}

答案 2 :(得分:0)

你认为成功是什么?

如果定义mysql_query()返回true成功,那么以下内容将起作用:

function InsertIntoDB($field1, $field2, $field3, $field4, $field5, $field6, $field7, $field8, $field9){
     $sql = "INSERT INTO `caches` ( `url` ,  `username` ,  `password` ,  `cachename` ,  `lat` ,  `long` ,  `message` ,  `notes` ,  `tags`  ) VALUES(  '{$field1}' ,  '{$field2}' ,  '{$field3}' ,  '{$field4}' ,  '{$field5}' ,  '{$field6}' ,  '{$field7}' ,  '{$field8}' ,  '{$field9}'  ) "; 
     return mysql_query($sql) ? "OK" : "FAIL";
}

答案 3 :(得分:0)

为什么不使用布尔而不是“确定”和“失败”?

function InsertIntoDB($field1, $field2, $field3, $field4, $field5, $field6, $field7, $field8, $field9){
     $sql = "INSERT INTO `caches` ( `url` ,  `username` ,  `password` ,  `cachename` ,  `lat` ,  `long` ,  `message` ,  `notes` ,  `tags`  ) VALUES(  '{$field1}' ,  '{$field2}' ,  '{$field3}' ,  '{$field4}' ,  '{$field5}' ,  '{$field6}' ,  '{$field7}' ,  '{$field8}' ,  '{$field9}'  ) "; 
     return mysql_query($sql);
}

if(InsertIntoDB(....)){
   // succeeded
}else{
   // failed
}

答案 4 :(得分:0)

正如其他人所建议的那样,为了表明成功或失败,你真的应该使用布尔值。如果确实想要额外的语义糖以提高可读性,那么你可以定义一些常量:

define('OK', true);
define('FAIL', false);

function insertIntoDB() {
    $sql = "...";
    return mysql_query($sql) ? OK : FAIL;
}

if (insertIntoDB() == OK) {
    // win!
}

但我要重申一下,只有当你特别觉得自己需要这种额外的可读性时才会这样做。这种方法可能会让你的代码的未来维护者说“WhyTF他做到了吗?”