如何制作自己的真/假返回功能?

时间:2010-09-15 06:01:25

标签: php mysql

我想创建自己的函数,其执行方式与以下实际代码类似。即

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;

   }
}

4 个答案:

答案 0 :(得分:3)

您可以使您的特殊功能更简单:

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

答案 1 :(得分:1)

我可以看到一些问题。

单引号中不会发生变量插值,也建议不要将变量直接替换为查询。

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

应该是

   $sql = 'SELECT field FROM table WHERE something='.mysql_real_escape_string($variable);
当出现问题时,

mysql_num_rows会返回false,例如当其参数不是有效resource时。如果你真的想检查“没有返回行”的情况,你需要检查0

的值

答案 2 :(得分:1)

是的,这就是一个功能。在询问它是否有效之前,你为什么不首先尝试这些东西呢?

您应该为mysql_query添加其他错误检查,并将$sql = 'SELECT field FROM table WHERE something=$variable';替换为:

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

答案 3 :(得分:1)

我稍微修改了一下

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评估为真,它不会再进一步​​,如果不是,则返回FALSE
  2. if语句更改为if(mysql_num_rows($res)),因为mysql_num_rows()将在失败时返回FALSE,并在其他所有内容上返回一个数字。因此,如果有0个受影响的行,或者出现错误,则无法获得返回TRUE
  3. 在您的$ sql变量中,您有单引号,文字$variable将被传递而不是传递给函数的文件