如何在自己的错误处理函数中使用mysql_errno()?

时间:2011-11-14 20:31:37

标签: php mysql

我想使用自己的错误处理,我的第一个想法就是:

// db connection
$conn = conn();
if(!$conn)
$aErrors[] = 'Fout: Geen database verbinding!';


function db_error($conn)
{
if(mysql_errno($conn) == 0)
    return true;
else
{
    // log! and global $aErrors[] =  mysql_errno($conn)
    return false;
}
}

$q = "SELECT 
   xusername, email
FROM 
   terra_user
WHERE
   ID = '".$_GET['ID']."'
LIMIT 1";

$exec = mysql_query($q);

// error check
if(db_error($exec))
{
echo'teeeeeest!';
}
else
{
   $aRow = mysql_fetch_assoc($exec);

   $uitgever = $aRow['username'];
   $uitgever_email = $aRow['email'];
   echo'Xteeeeeest!';
}

但我得到了下一个错误:

  

警告:mysql_errno():提供的参数不是xxxx中有效的MySQL-Link资源

在这种情况下,mysql_erro()会返回一个数字> 0,所以它看起来没问题,除了链接源不正常?

如果我使用mysql_errno($conn),我会:

  

警告:mysql_fetch_assoc():提供的参数不是xxxxxx中有效的MySQL结果资源

在这种情况下,mysql_erro()返回0!

对于此代码,我更改了一个名称错误的字段。为用户名添加额外的x :) $_GET['ID']已使用ctype_digit($_GET['ID'])

进行了测试

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我完全没有看到这样的功能。你有错误“处理”的$ exec,这就够了。

// db connection
$conn = conn();
if(!$conn) {
    $aErrors[] = 'Fout: Geen database verbinding!';
}

$q = "SELECT xusername, email FROM terra_user WHERE ID = ".(int)$_GET['ID']." LIMIT 1";
$exec = mysql_query($q) or trigger_error(mysql_error());

// error check
if(!$exec))
{
    $aErrors[] = 'Fout: Geen database verbinding!';
}
else
{
   $aRow = mysql_fetch_assoc($exec);
   $uitgever = $aRow['username'];
   $uitgever_email = $aRow['email'];
   echo'Xteeeeeest!';
}

虽然我认为将错误收集到数组中没有意义。如果它是严重错误,则无需等待另一个 - 只有一个就足够了。如果这不是一个严重的错误 - 为什么要打扰用户?