如果没有$ sql_result的结果,则会抛出错误... 如果没有行,请执行此操作以防止出现错误,正确的方法是什么?不能是你必须先计算行数?
mysql_result($sql_result, 0);
亲切问候任何反应..Ĵ
如果没有$ sql_result的结果,则会抛出错误... 如果没有行,请执行此操作以防止出现错误,正确的方法是什么?不能是你必须先计算行数?
mysql_result($sql_result, 0);
亲切问候任何反应..Ĵ
if (is_resource($sql_result)) {
$value = mysql_result($sql_result, 0);
}
您必须测试$sql_result
第一。
if ($sql_result !== false # query was successful
&& mysql_num_rows($sql_result) > 0) # query returned rows
{
// do your thing
}
这是方法,我喜欢:
$sql = "SELECT * ....";
$r = mysql_query($sql);
if (!$r) throw new Exception('Error: ' . mysql_error() . '; Attempted: ' . $sql);
if (mysql_num_rows($r) > 0) {
//Process Result
} else {
//Deal with an empty Result Set
}
我抛出一个异常,因为在我至少应用,一个失败的SQL查询是一个大忌MySQL查询失败:继续正常的脚本执行不会完成任何有用的工作〜[SQL语法或数据库连接问题存在错误]。异常冒出来,直到应用程序有适当的地方来捕捉这样的问题。
我使用特定于应用程序的例外:ExceptionMySQL
,以便我可以在应用程序中更高级地捕获它:例如
//Top Level Application
try {
//Execute appropriate application call
} catch (ExceptionMySQL $e) {
//Deal with a mysql exception
} catch (ExceptionPermission $e) {
//Deal with a permission Exception
} catch (//etc. etc. etc.
不是一个坏主意,尽管你一定会选择一个比'Exception'更具体的类型来抛出...... :)如果你还没有使用异常,请注意这将导致你的脚本死亡,如果查询不成功。通常在这种情况下这是正确的,但仍然需要注意。 – cHao 2012-02-19 01:52:02
@cHao是的,我打算使用我实际使用的异常,但是我担心它让我的回答不太清楚=) – Shad 2012-02-19 02:23:33
这种方法似乎为单个查询添加了更多的工作和逻辑,清洁。如果查询不好,PHP会抛出错误,但如果没有行,则不会抛出错误。如果查询是好的,结果集是空的,并且你正好行事,就好像有一行一样,但是PHP的标准过程1)检查是否(is_resource($ result))然后2) ($ row = mysql_query($ result))允许你容纳空的结果集,而不需要繁琐的异常,而且在/ then/else中很简单。为什么复杂的事情? – hexparrot 2012-02-19 02:37:20
最简单的方法来停止'mysql_result'抛出一个错误是*停止使用它*。这是古老的,勉强维持了。 – cHao 2012-02-18 22:44:17