我想创建自己的函数,其执行方式与以下实际代码类似。即
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;
}
}
答案 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;
}
FALSE
。if
语句更改为if(mysql_num_rows($res))
,因为mysql_num_rows()
将在失败时返回FALSE,并在其他所有内容上返回一个数字。因此,如果有0个受影响的行,或者出现错误,则无法获得返回TRUE
。$variable
将被传递而不是传递给函数的文件