向PHP MYSQL函数添加If/else错误/成功消息
我想知道我如何才能添加一个成功或失败的消息返回在这个功能结束向PHP MYSQL函数添加If/else错误/成功消息,php,mysql,Php,Mysql,我想知道我如何才能添加一个成功或失败的消息返回在这个功能结束 function InsertIntoDB($field1, $field2, $field3, $field4, $field5, $field6, $field7, $field8, $field9){ $sql = "INSERT INTO `caches` ( `url` , `username` , `password` , `cachename` , `lat` , `long` , `message` ,
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”。你对成功的定义是什么
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";
}
如果定义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";
}
您不应该将“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(...)) {
...
}
或:
为什么不使用布尔值而不是“OK”和“FAIL”
正如其他人所建议的,为了表示成功或失败,您确实应该使用布尔值。如果您真的想要额外的语义糖分来提高可读性,那么您可以定义一些常量:
define('OK', true);
define('FAIL', false);
function insertIntoDB() {
$sql = "...";
return mysql_query($sql) ? OK : FAIL;
}
if (insertIntoDB() == OK) {
// win!
}
但我要重申的是,只有当你特别觉得你需要这种额外的可读性时。这种方法可能会让未来的代码维护者说“他为什么这么做?”为什么不将true/false作为success/failure返回?返回字符串意味着您将在整个代码中乱扔
==“OK”
。请阅读其他答案-尽管这正是问题所要求的,但返回字符串并不是一个很好的练习。
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
}
define('OK', true);
define('FAIL', false);
function insertIntoDB() {
$sql = "...";
return mysql_query($sql) ? OK : FAIL;
}
if (insertIntoDB() == OK) {
// win!
}