MySQL越界是指在訪問MySQL數(shù)據(jù)庫中的數(shù)據(jù)時(shí),超出了數(shù)組的范圍或者維度的范圍,從而導(dǎo)致了程序的崩潰、異常情況的出現(xiàn)。
在MySQL數(shù)據(jù)庫中,當(dāng)我們查詢數(shù)據(jù)時(shí)經(jīng)常需要返回多條記錄的結(jié)果集,比如使用SELECT語句查詢表中的數(shù)據(jù),如果我們使用ORDER BY語句排序,如果返回的數(shù)據(jù)條數(shù)大于我們定義的數(shù)組大小,就會(huì)出現(xiàn)越界的情況。
$result = mysql_query("SELECT * FROM user ORDER BY id"); $arr = array(); $i = 0; while($row = mysql_fetch_array($result)) { $arr[$i]['id'] = $row['id']; $arr[$i]['name'] = $row['name']; $i++; } echo $arr[100]['id']; //超出了數(shù)組的范圍,會(huì)報(bào)錯(cuò)。
除了數(shù)組越界,還有可能出現(xiàn)字段越界的情況。比如查詢語句SELECT * FROM user WHERE age >30,如果表中沒有age字段,就會(huì)出現(xiàn)字段越界的情況。
$result = mysql_query("SELECT * FROM user WHERE age >30"); $arr = array(); $i = 0; while($row = mysql_fetch_array($result)) { $arr[$i]['id'] = $row['id']; $arr[$i]['name'] = $row['name']; $i++; } echo $arr[0]['age']; //沒有age字段,會(huì)報(bào)錯(cuò)。
為了避免MySQL越界的情況,開發(fā)人員需要在程序設(shè)計(jì)過程中注意數(shù)組大小的定義和字段的查找,保證代碼的健壯性和可靠性。