如果您加了新功能,或者是有改进,请与大家一起分享。
下载: test_db.php
- <?php
- $db_config["hostname"] = "127.0.0.1"; //服务器地址
- $db_config["username"] = "root"; //数据库用户名
- $db_config["password"] = "root"; //数据库密码
- $db_config["database"] = "wap_blueidea_com"; //数据库名称
- $db_config["charset"] = "utf8";
- include('db.php');
- $db = new db();
- $db->connect($db_config);
- //例:查询表 table_name 中 cid=1的所有记录。
- $row = $db->row_select('table_name', 'cid=1');
- ?>
下载: db.php
- <?php
- /*
- * mysql数据库 DB类
- * @package db
- * @author yytcpt(无影)
- * @version 2008-03-27
- * @copyrigth http://www.d5s.cn/
- */
- class db {
- var $connection_id = "";
- var $pconnect = 0;
- var $shutdown_queries = array();
- var $queries = array();
- var $query_id = "";
- var $query_count = 0;
- var $record_row = array();
- var $failed = 0;
- var $halt = "";
- var $query_log = array();
- function connect($db_config){
- if ($this->pconnect){
- $this->connection_id = mysql_pconnect($db_config["hostname"], $db_config["username"], $db_config["password"]);
- }else{
- $this->connection_id = mysql_connect($db_config["hostname"], $db_config["username"], $db_config["password"]);
- }
- if ( ! $this->connection_id ){
- $this->halt("Can not connect MySQL Server");
- }
- if ( ! @mysql_select_db($db_config["database"], $this->connection_id) ){
- $this->halt("Can not connect MySQL Database");
- }
- if ($db_config["charset"]) {
- @mysql_unbuffered_query("SET NAMES '".$db_config["charset"]."'");
- }
- return true;
- }
- //发送SQL 查询,并返回结果集
- function query($query_id, $query_type='mysql_query'){
- $this->query_id = $query_type($query_id, $this->connection_id);
- $this->queries[] = $query_id;
- if (! $this->query_id ) {
- $this->halt("查询失败:\n$query_id");
- }
- $this->query_count++;
- $this->query_log[] = $str;
- return $this->query_id;
- }
- //发送SQL 查询,并不获取和缓存结果的行
- function query_unbuffered($sql=""){
- return $this->query($sql, 'mysql_unbuffered_query');
- }
- //从结果集中取得一行作为关联数组
- function fetch_array($sql = ""){
- if ($sql == "") $sql = $this->query_id;
- $this->record_row = @mysql_fetch_array($sql, MYSQL_ASSOC);
- return $this->record_row;
- }
- function shutdown_query($query_id = ""){
- $this->shutdown_queries[] = $query_id;
- }
- //取得结果集中行的数目,仅对 INSERT,UPDATE 或者 DELETE
- function affected_rows() {
- return @mysql_affected_rows($this->connection_id);
- }
- //取得结果集中行的数目,仅对 SELECT 语句有效
- function num_rows($query_id="") {
- if ($query_id == "") $query_id = $this->query_id;
- return @mysql_num_rows($query_id);
- }
- //返回上一个 MySQL 操作中的错误信息的数字编码
- function get_errno(){
- $this->errno = @mysql_errno($this->connection_id);
- return $this->errno;
- }
- //取得上一步 INSERT 操作产生的 ID
- function insert_id(){
- return @mysql_insert_id($this->connection_id);
- }
- //得到查询次数
- function query_count() {
- return $this->query_count;
- }
- //释放结果内存
- function free_result($query_id=""){
- if ($query_id == "") $query_id = $this->query_id;
- @mysql_free_result($query_id);
- }
- //关闭 MySQL 连接
- function close_db(){
- if ( $this->connection_id ) return @mysql_close( $this->connection_id );
- }
- //列出 MySQL 数据库中的表
- function get_table_names(){
- global $db_config;
- $result = mysql_list_tables($db_config["database"]);
- $num_tables = @mysql_numrows($result);
- for ($i = 0; $i < $num_tables; $i++) {
- $tables[] = mysql_tablename($result, $i);
- }
- mysql_free_result($result);
- return $tables;
- }
- //从结果集中取得列信息并作为对象返回,取得所有字段
- function get_result_fields($query_id=""){
- if ($query_id == "") $query_id = $this->query_id;
- while ($field = mysql_fetch_field($query_id)) {
- $fields[] = $field;
- }
- return $fields;
- }
- //错误提示
- function halt($the_error=""){
- $message = $the_error."<br/>\r\n";
- $message.= $this->get_errno() . "<br/>\r\n";
- $sql = "INSERT INTO `db_error`(pagename, errstr, timer) VALUES('".$_SERVER["PHP_SELF"]."', '".addslashes($message)."', ".time().")";
- @mysql_unbuffered_query($sql);
- if (DEBUG==true){
- echo "<html><head><title>MySQL 数据库错误</title>";
- echo "<style type=\"text/css\"><!--.error { font: 11px tahoma, verdana, arial, sans-serif, simsun; }--></style></head>\r\n";
- echo "<body>\r\n";
- echo "<blockquote>\r\n";
- echo "<textarea class=\"error\" rows=\"15\" cols=\"100\" wrap=\"on\" >" . htmlspecialchars($message) . "</textarea>\r\n";
- echo "</blockquote>\r\n</body></html>";
- exit;
- }
- }
- function __destruct(){
- $this->shutdown_queries = array();
- $this->close_db();
- }
- function sql_select($tbname, $where="", $limit=0, $fields="*", $orderby="id", $sort="DESC"){
- $sql = "SELECT ".$fields." FROM `".$tbname."` ".($where?" WHERE ".$where:"")." ORDER BY ".$orderby." ".$sort.($limit ? " limit ".$limit:"");
- return $sql;
- }
- function sql_insert($tbname, $row){
- foreach ($row as $key=>$value) {
- $sqlfield .= $key.",";
- $sqlvalue .= "'".$value."',";
- }
- return "INSERT INTO `".$tbname."`(".substr($sqlfield, 0, -1).") VALUES (".substr($sqlvalue, 0, -1).")";
- }
- function sql_update($tbname, $row, $where){
- foreach ($row as $key=>$value) {
- $sqlud .= $key."= '".$value."',";
- }
- return "UPDATE `".$tbname."` SET ".substr($sqlud, 0, -1)." WHERE ".$where;
- }
- function sql_delete($tbname, $where){
- return "DELETE FROM `".$tbname."` WHERE ".$where;
- }
- //新增加一条记录
- function row_insert($tbname, $row){
- $sql = $this->sql_insert($tbname, $row);
- return $this->query_unbuffered($sql);
- }
- //更新指定记录
- function row_update($tbname, $row, $where){
- $sql = $this->sql_update($tbname, $row, $where);
- return $this->query_unbuffered($sql);
- }
- //删除满足条件的记录
- function row_delete($tbname, $where){
- $sql = $this->sql_delete($tbname, $where);
- return $this->query_unbuffered($sql);
- }
- /* 根据条件查询,返回所有记录
- * $tbname 表名, $where 查询条件, $limit 返回记录, $fields 返回字段
- */
- function row_select($tbname, $where="", $limit=0, $fields="*", $orderby="id", $sort="DESC"){
- $sql = $this->sql_select($tbname, $where, $limit, $fields, $orderby, $sort);
- return $this->row_query($sql);
- }
- //详细显示一条记录
- function row_select_one($tbname, $where, $fields="*", $orderby="id"){
- $sql = $this->sql_select($tbname, $where, 1, $fields, $orderby);
- return $this->row_query_one($sql);
- }
- function row_query($sql){
- $rs = $this->query($sql);
- $rs_num = $this->num_rows($rs);
- $rows = array();
- for($i=0; $i<$rs_num; $i++){
- $rows[] = $this->fetch_array($rs);
- }
- $this->free_result($rs);
- return $rows;
- }
- function row_query_one($sql){
- $rs = $this->query($sql);
- $row = $this->fetch_array($rs);
- $this->free_result($rs);
- return $row;
- }
- //计数统计
- function row_count($tbname, $where=""){
- $sql = "SELECT count(id) as row_sum FROM `".$tbname."` ".($where?" WHERE ".$where:"");
- $row = $this->row_query_one($sql);
- return $row["row_sum"];
- }
- }
- ?>
$sql = “select id from news”;
$rr = $db->row_query($sql);
$nums = $db->num_rows();
为什么取不到总数?