看板 PHP 關於我們 聯絡資訊
function sql($sql,$renew=NULL,$noreturn=NULL){ global $SQLres; if(!isset($SQLres[$sql]) || $renew!==NULL){ $SQLres[$sql]=mysql_query($sql); } # echo $sql.'<br />'; if($noreturn===NULL){ return mysql_fetch_array($SQLres[$sql]); } } 另外我也掰出這個函式... 這可以讓我的程式漂亮點... $res=mysql_query('SELECT ....'); while($e=mysql_fetch_array($res)){ .... } or $res=mysql_query('SELECT ....'); if($e=mysql_fetch_array($res)){ .... } 變成 while($e=sql('SELECT ....')){ .... } or if($e=sql('SELECT ....')){ } 至於DELETE或一些沒有return value的SQL 可以這樣 sql('SET NAMES \'UTF8\'',1,1); 其中第二個renew要適時使用 並且腦袋要想清楚 不然會有很莫名的bug 跟sql()一起來的還有 function sql_count($sql,$renew=NULL){ global $SQLres; if(!isset($SQLres[$sql]) || $renew!==NULL){ $SQLres[$sql]=mysql_query($sql); } return mysql_num_rows($SQLres[$sql]); } 之後還可能陸陸續續弄出其他 目前是只用到這些 sql_insert() 可以自己改造成sql_update 大概像這樣 function sql_update($table,$res,$cond,$noescape=NULL){ $data_a=array(); $ct=0; foreach($res as $key => $val){ $data_a[]='`'.$key.'`='.'\''.mysql_real_escape_string($val).'\''; $ct++; } $data=implode(',',$data_a); $sql='UPDATE `'.$table.'` SET '.$data; if($noescape!==NULL){ $sql.=($ct>0?',':'').$noescape; } $sql.=' WHERE '.$cond; return sql($sql,1,1); } noescape是給count=count+1這種不用quote起來的東西用的 不過這邊condition也沒有比較漂亮的寫法 目前只最佳化到這樣 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.22.93.130
yorjing:恩 謝謝大大指教 讓小弟我受益匪淺 03/13 16:14