簡體   English   中英

如何創建自己的true / false返回函數?

[英]How do I make my own true / false return function?

我想做我自己的函數,其功能與以下實際代碼類似。即

if(mysql_num_rows($res) == FALSE) {

  // DO SOMETHING BECAUSE THERE ARE NO RESULTS

}

在我的代碼中,我在該位置重復了幾次SQL語句,如果有結果,則繼續進行操作。

我想做的是在自己的函數中創建自己的FALSE返回值,即

if(my_special_function($variable) == FALSE) {

    // DO STUFF

}

這是否像我的特殊功能中那樣簡單...

function my_special_function($variable) {

   $sql = 'SELECT field FROM table WHERE something=$variable';
   $res = mysql_query($sql);

   if(mysql_num_rows($res) == FALSE) {

     return FALSE;

   } else {

     return TRUE;

   }
}

您可以使您的特殊功能更加簡單:

function my_special_function($variable)
{
   $sql = "SELECT field FROM table WHERE something='{$variable}'";
   $res = mysql_query($sql);
   return mysql_num_rows($res) > 0;
}

我可以看到一些問題。

變量插值不會用單引號引起,也建議不要將變量直接替換為查詢。

   $sql = 'SELECT field FROM table WHERE something=$variable';

應該

   $sql = 'SELECT field FROM table WHERE something='.mysql_real_escape_string($variable);

mysql_num_rows在出現問題時(例如,當其參數不是有效resource時)返回false 如果您確實要檢查“無行返回”的情況,則需要檢查其值為0

是的,僅此而已。 您為什么不先問這樣的事,然后再問是否行得通?

您應該為mysql_query添加其他錯誤檢查,並替換$sql = 'SELECT field FROM table WHERE something=$variable'; 通過:

$sql = 'SELECT field FROM table WHERE something='.$variable;

我會修改一下

function my_special_function($variable) {
   $sql = "SELECT field FROM table WHERE something=$variable";
   $res = mysql_query($sql);

   if(mysql_num_rows($res)) {
     return TRUE;
   }
   return FALSE;
}

變化

  1. 不需要else {...},就好像if評估為true一樣,它將不再進行,如果不是,則返回FALSE
  2. if語句更改為if(mysql_num_rows($res))因為mysql_num_rows()將在失敗時返回FALSE,並在其他所有值上返回數字。 因此,如果受影響的行數為0,或者發生錯誤,則不會返回TRUE
  3. 在$ sql變量中,您具有單引號,將直接傳遞文字$variable而不是傳遞給函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM