作者buganini (霸格尼尼)
看板PHP
標題Re: [請益] 不知道哪裡錯
時間Tue Mar 13 01:22:51 2007
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