我想使用自己的错误处理,我的第一个想法就是:
// 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'])
我在这里做错了什么?
答案 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!';
}
虽然我认为将错误收集到数组中没有意义。如果它是严重错误,则无需等待另一个 - 只有一个就足够了。如果这不是一个严重的错误 - 为什么要打扰用户?