十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
判斷MySQL 返回的查詢結(jié)果為空:

創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作與策劃設(shè)計(jì),寬城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:寬城等地區(qū)。寬城做網(wǎng)站價(jià)格咨詢:028-86922220
$link=mysql_connect(*********);
$sql="SELECT count FROM `test` WHERE value = 10000";
$result=mysql_query($sql,$link);
if($result){
echo "成功";
}else{
echo "失敗";
}
MySQL數(shù)據(jù)庫是一個(gè)基于結(jié)構(gòu)化數(shù)據(jù)的開源數(shù)據(jù)庫 SQL語句是MySQL數(shù)據(jù)庫中核心語言 不過在MySQL數(shù)據(jù)庫中執(zhí)行SQL語句 需要小心兩個(gè)陷阱
陷阱一 空值不一定為空
空值是一個(gè)比較特殊的字段 在MySQL數(shù)據(jù)庫中 在不同的情形下 空值往往代表不同的含義 這是MySQL數(shù)據(jù)庫的一種特性 如在普通的字段中(字符型的數(shù)據(jù)) 空值就是表示空值 但是如果將一個(gè)空值的數(shù)據(jù)插入到TimesTamp類型的字段中 空值就不一定為空 此時(shí)為出現(xiàn)什么情況呢(如下圖)?
我先創(chuàng)建了一個(gè)表 在這個(gè)表中有兩個(gè)字段 User_id(其數(shù)據(jù)類型是int) Date(其數(shù)據(jù)類型是TimesTamp) 現(xiàn)在往這個(gè)表中插入一條記錄 其中往Date字段中插入的是一個(gè)NULL空值 可是當(dāng)我們查詢時(shí) 其結(jié)果顯示的卻是插入記錄的當(dāng)前時(shí)間 這是怎么一回事呢?其實(shí)這就是在MySQL數(shù)據(jù)庫中執(zhí)行SQL語句時(shí)經(jīng)常會(huì)遇到的一個(gè)陷阱 空值不一定為空 在操作時(shí) 明明插入的是一個(gè)空值的數(shù)據(jù) 但是最后查詢得到的卻不是一個(gè)空值
在MySQL數(shù)據(jù)庫中 NULL對(duì)于一些特殊類型的列來說 其代表了一種特殊的含義 而不僅僅是一個(gè)空值 對(duì)于這些特殊類型的列 各位讀者主要是要記住兩個(gè) 一個(gè)就是筆者上面舉的TimesTamp數(shù)據(jù)類型 如果往這個(gè)數(shù)據(jù)類型的列中插入Null值 則其代表的就是系統(tǒng)的當(dāng)前時(shí)間 另外一個(gè)是具有auto_increment屬性的列 如果往這屬性的列中插入Null值的話 則系統(tǒng)會(huì)插入一個(gè)正整數(shù)序列 而如果在其他數(shù)據(jù)類型中 如字符型數(shù)據(jù)的列中插入Null的數(shù)據(jù) 則其插入的就是一個(gè)空值
陷阱二 空值不一定等于空字符
在MySQL中 空值(Null)與空字符( )相同嗎?答案是否定的 請(qǐng)大家先來看下圖的演示
在同一個(gè)數(shù)據(jù)庫表中 同時(shí)插入一個(gè)Null值的數(shù)據(jù)和一個(gè) 空字符的數(shù)據(jù) 然后利用Select語句進(jìn)行查詢 最后顯示的結(jié)果如上圖所示 顯然其顯示的結(jié)果是不相同的 從這個(gè)結(jié)果中就可以看出 空值不等于空字符 這就是在MySQL中執(zhí)行SQL語句遇到的第二個(gè)陷阱 在實(shí)際工作中 空值數(shù)據(jù)與空字符往往表示不同的含義 數(shù)據(jù)庫管理員可以根據(jù)實(shí)際的需要來進(jìn)行選擇 如對(duì)于電話號(hào)碼等字段 可以默認(rèn)設(shè)置為空值(表示根本不知道對(duì)方的電話號(hào)碼)或者設(shè)置為空字符(表示后來取消了這個(gè)號(hào)碼)等等 由于他們?cè)跀?shù)據(jù)庫中會(huì)有不同的表現(xiàn)形式 所以數(shù)據(jù)庫管理員需要區(qū)別對(duì)待 筆者更加喜歡使用空值 而不是空字符 這主要是因?yàn)獒槍?duì)空值這個(gè)數(shù)據(jù)類型有幾個(gè)比較特殊的運(yùn)算字符 如果某個(gè)字段是空字符 數(shù)據(jù)庫中是利用字段名稱來代替 相反 如果插入的是空值 則直接顯示的是NULL 這跟其他數(shù)據(jù)庫的顯示方式也是不同的
一是IS NULL 和IS NOT NULL關(guān)鍵字 如果要判斷某個(gè)字段是否含用空值的數(shù)據(jù) 需要使用特殊的關(guān)鍵字 其中前者表示這個(gè)字段為空 后者表示這個(gè)字段為非空 在Select語句的查詢條件中這兩個(gè)關(guān)鍵字非常的有用 如需要查詢所有電話號(hào)碼為空的用戶(需要他們補(bǔ)充電話號(hào)碼信息) 就可以在查詢條件中加入is not null關(guān)鍵字
lishixinzhi/Article/program/MySQL/201311/29455
同意樓上的判斷,可能你的數(shù)據(jù) 的值就是 'null'
出現(xiàn)這種情況的可能是,數(shù)據(jù)是從哪兒導(dǎo)入的。畢竟沒有誰 這么無聊, 把'null' 寫入name列。
MySql中判斷null可以用 is null 和 =
1、is null :僅僅可以判斷null值,可讀性較高,建議使用。
select * from base_user where username is null
2、=? ? :既可以判斷null值,也可以判斷普通的數(shù)值,可讀性較低。
select * from base_user where?username?= null