2013-04-15 56 views
1

如何查找和替換空行使用這個時候.....替換NULL值在MySQL

$Qemaster="select * from emaster where `branch`='$bid' and `department`='$did' and `status`!='L'"; 
$Remaster=mysql_query($Qemaster); 
while($Rowemaster=mysql_fetch_array($Remaster)){ 
    $empcode=$Rowemaster[id]; 
    $name=$Rowemaster[name]; 
    $Tleave=0; 

echo "<tr>"; 
echo "<td rowspan='2'>".$name."</td>"; 
echo "<td>Leave</td>"; 

$Qlp="select * from lpsummary where ((`month` IN(04,05,06,07,08,09,10,11,12) and `year`='$year') or (`month` IN (01,02,03) and `year`='$Nyear')) and `empcode`='$empcode'"; 
$Rlp=mysql_query($Qlp); 
$RRlp=mysql_num_rows($Rlp); 
while($Rowlp=mysql_fetch_array($Rlp)){ 

$leave=$Rowlp['leave']; 
$Tleave=$Tleave+$leave; 
if($leave==NULL){ 
    $Eleave='-'; 
} 
else{ 
    $Eleave=$leave; 
} 
echo "<td>".$Eleave."</td>"; 
} 
echo "<td><font color='red'>".$Tleave."</font></td>"; 
echo "<td><font color='green'>".substr(($Tleave/$RRlp),0,4)."</font></td>"; 
echo "<tr><td>Percentage</td>"; 
} 

,如果有一個空行......我想,以取代作爲 - 而不是回聲「 」。$ Eleave。 「」;

+1

通過學習如何使用[MySQL的更新](http://dev.mysql.com/doc/refman/5.0/en/update.html)查詢。 – Jon

回答

3

其實你可以做,直接通過查詢,所以你不會有你的PHP任何IF-ELSE條件code.by使用COALESCE(),如

此外,使它成爲一個習慣,不使用*指定列名。

SELECT colnames,..., COALESCE(`leave`, '-') `Leave` 
FROM lpsummary 
WHERE ..... 

UPDATE 1

SELECT COALESCE(l.leave, '-') AS `LEAVE` 
FROM lpsummary l 
WHERE (
      (month IN(04,05,06,07,08,09,10,11,12) and year='$year') or 
      (month IN (01,02,03) and year='$Nyear') 
     ) and empcode='$empcode' 

作爲旁註,查詢是用SQL Injection脆弱,如果變量的值(小號)從外部來了。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements你可以擺脫使用單引號圍繞值。

+0

非常好的功能,我一直在他們想要更新表的印象>< – Jon

+0

謝謝Mr.JW .. 現在我的代碼看起來像 $ Qlp =「select leave,COALESCE('leave', (''IN'(04,05,06,07,08,09,10,11,12)和'year' ='$ year')或('month' IN(01) ,02,03)和'year' ='$ Nyear'))和'empcode' ='$ empcode'「; 但獲取錯誤爲 警告:mysql_fetch_array():提供的參數不是 – Pilaventhiran

+0

中的有效MySQL結果資源請參閱我的更新答案。 –