Wow - thanks for the code, but it's over my head at this point. I'm a PHP newbie....I typically use ASP Classic, but I realize I need to learn PHP for ongoing development. Problem is, we don't have MySQL here, so I have to fumble my way through with MS SQL. Thanks! -----Original Message----- From: hack988 hack988 [mailto:hack988@xxxxxxxxxxxxx] Sent: Wednesday, August 26, 2009 10:13 AM To: ash@xxxxxxxxxxxxxxxxxxxx Cc: David Stoltz; php-general@xxxxxxxxxxxxx Subject: Re: How to output a NULL field? My code for mssql please enable the php's mssql extentions. it used like so many mysql class that you can find by google ------------------------------------------------------------------------------------------------------------------ <?php if(!defined('IN_WEB')) { exit('Access Denied'); } ini_set('mssql.datetimeconvert',0);//php>4.2.0 disable php's automatic datetime convert Class DB { var $querynum=0; var $mssql_link; var $conn_link; var $sp_link; var $sp_name=''; var $error_stop=0; var $show_error=0; var $dbhost; var $dbuser; var $dbpw; var $dbname; var $pconnect; var $var_type=array(); var $fields_name=array(); var $last_error_msg=''; var $phprunversion=''; function DB() { //define type for sp $this->var_type['sp_bit']=SQLBIT; $this->var_type['sp_tinyint']=SQLINT1; $this->var_type['sp_smallint']=SQLINT2; $this->var_type['sp_int']=SQLINT4; $this->var_type['sp_bigint']=SQLVARCHAR; $this->var_type['sp_real']=SQLFLT4; $this->var_type['sp_float']=SQLFLT8; $this->var_type['sp_float-null']=SQLFLTN; $this->var_type['sp_smallmoney']=SQLFLT8; $this->var_type['sp_money']=SQLFLT8; $this->var_type['sp_money-null']=SQLFLT8; $this->var_type['sp_char']=SQLCHAR; $this->var_type['sp_varchar']=SQLVARCHAR; $this->var_type['sp_text']=SQLTEXT; $this->var_type['sp_datetime']=SQLINT4; $this->phprunversion=phpversion(); //end } /*>=php4.4.1,>=php5.1.1 a new paramate for if use newlink for connect,pconnect */ function rconnect($newlink=false){//2007.03.01 by hack988 fix phpversion check if($this->phprunversion >= '4.4.1' && $this->phprunversion < '5.0.0' || $this->phprunversion >= '5.1.1'){ return $this->rconnect4p($newlink); }else{ return $this->rconnect3p(); } } function rconnect3p(){ $this->mssql_link = $this->pconnect==0 ? mssql_connect($this->dbhost, $this->dbuser, $this->dbpw) : mssql_pconnect($this->dbhost, $this->dbuser, $this->dbpw); if(!$this->mssql_link){ $this->halt("connect ($this->pconnect)MSSQL($this->dbhost,$this->dbuser)failed!"); return false; }else{ $this->conn_link=$this->mssql_link; if($this->dbname) { if (!@$this->select_db($this->dbname,$this->conn_link)){ $this->halt('can not use database '.$this->dbname); return false; }else{ return true; } }else{ return true; } } } function rconnect4p($newlink=false){ $this->mssql_link = $this->pconnect==0 ? mssql_connect($this->dbhost, $this->dbuser, $this->dbpw , $newlink) : mssql_pconnect($this->dbhost, $this->dbuser, $this->dbpw, $newlink); if(!$this->mssql_link){ $this->halt("reconect($this->pconnect)MSSQL($this->dbhost,$this->dbuser)failed"); return false; }else{ $this->conn_link=$this->mssql_link; if($this->dbname) { if (!@$this->select_db($this->dbname,$this->conn_link)){ $this->halt('can not use database '.$this->dbname); return false; }else{ return true; } }else{ return true; } } } function connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect = 0,$auto_conn=0 ,$newlink=false) { $this->dbhost=$dbhost; $this->dbuser=$dbuser; $this->dbpw=$dbpw; $this->dbname=$dbname; $this->pconnect=$pconnect; if($auto_conn){ return $this->rconnect($newlink); }else{ return true; } } function close() { if($this->conn_link){ $result=mssql_close($this->conn_link); }else{ $result=true; } $this->mssql_link=''; $this->sp_link=''; $this->conn_link=''; return $result; } function select_db($dbname){ $this->mssql_link=mssql_select_db("[".$dbname."]"); return $this->mssql_link; } function query($SQL,$method='') { if($method=='UNBUFFERED'){ mssql_query("SET NOCOUNT ON",$this->conn_link); $this->mssql_link = mssql_query($SQL,$this->conn_link); mssql_query("SET NOCOUNT OFF",$this->conn_link); }else{ $this->mssql_link = mssql_query($SQL,$this->conn_link); } if (!$this->mssql_link) $this->halt('SQL query error: ' . $SQL); $this->querynum++; return $this->mssql_link; } function get_one($sql,$prefix=""){ $query=$this->query($sql,'UNBUFFERED'); if(strlen($prefix)>0){ $this->get_fields_name(); $rs=$this->fetch_duplicate_array($query); }else{ $rs = $this->fetch_array($query, MSSQL_ASSOC); } return $rs; } function seek($num,$link=''){ $link = empty($link) ? $this->mssql_link : $link; return mssql_data_seek($link,$num); } function fetch_array($query, $result_type = MSSQL_ASSOC) { return mssql_fetch_array($query, $result_type); } function fetch_duplicate_array($query, $prefix="dup_") { if(count($this->fields_name)<1) return false; $fields=$this->fetch_array($query, MYSQL_NUM); if(!$fields) return false; $reternfields=array(); foreach($fields AS $key=>$value){ if(isset($reternfields[$this->fields_name[$key]])) $reternfields[$prefix.$this->fields_name[$key]]=$value; else $reternfields[$this->fields_name[$key]]=$fields[$key]; } return $reternfields; } function affected_rows($link='') { $link= empty($link) ? $this->conn_link :$link; return mssql_rows_affected($link); } function get_fields_name($link=''){ $link= empty($link) ? $this->mssql_link :$link; $fieldscount=$this->num_fields($link); for($i=0;$i<$fieldscount;$i++){ $field[$i]=mssql_field_name($this->mssql_link,$i); } $this->fields_name=$field; } function num_rows($link='') { $link = empty($link) ? $this->mssql_link : $link; $rows = mssql_num_rows($link); return $rows; } function num_fields($query) { return mssql_num_fields($query); } function sp_init($sp_name){ $this->sp_link=mssql_init($sp_name,$this->conn_link); !$this->sp_link && $this->halt('Init PROCEDURE Failed :' . $sp_name); $this->sp_name=$sp_name; return $this->sp_link; } function sp_bind($parameter,&$var,$type,$if_out=false,$if_null=false){ if(!$this->sp_link){ $this->halt('Can not bind var for PROCEDURE' . $parameter); return false; }else{ if(!mssql_bind($this->sp_link,$parameter,$var,$this->var_type[$type],$if_out,$if_null)){ $this->halt('PROCEDURE var binding failed' . $parameter.$this->var_type[$type]); return false; }else{ return true; } } } function sp_execute($skipout,$sp_link=''){ $this->sp_link=$sp_link? $sp_link : $this->sp_link; $this->mssql_link=mssql_execute($this->sp_link,$skipout); if (!$this->mssql_link) $this->halt('exec PROCEDURE failed: ' . $SQL); $this->querynum++; return $this->mssql_link; } function sp_free_statement($sp_link=''){ $this->sp_link=$sp_link? $sp_link : $this->sp_link; if(!mssql_free_statement($this->sp_link)){ $this->halt('free memory failed (PROCEDURE):'.$this->sp_name); return false; }else{ $this->sp_link=''; return true; } } function free_result($query) { return mssql_free_result($query); } function insert_id() { $rs = $this->get_one("SELECT @@IDENTITY AS [insertid]"); if($rs) return $rs['insertid']; else return false; } function halt($msg='') { if($this->show_error){ echo date("Y-m-d H:i:s",time())."<br/>\n"; echo $msg."<br/>\n"; $this->last_error_msg="SQL Server Msg:".nl2br(mssql_get_last_message())."<br/>\n"; echo $this->last_error_msg; $this->last_error_msg = $msg.$this->last_error_msg; } $this->error_stop && exit; } } ?> -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php