如果沒有$ 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