我想知道如何在此功能结束时添加成功或失败消息
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”。
答案 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他做到了吗?”