作者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
1F:推 yorjing:恩 谢谢大大指教 让小弟我受益匪浅 03/13 16:14