php连接mysql数据库mysql.class.php

 更新时间:2016年11月25日 16:38  点击:1479
本文章是一款比较实例的php 连接mysql数据库的连接类,比起一般的php mysql数据库函数要实用方法了很多,操作维护起来也很简单,只要处理这一个文伯就KO了。

+-----------------------------------------------------------------------
| 文件概要:php连接mysql数据库
| 文件名称:mysql.class.php
| 创建时间:2010-9-7
+-----------------------------------------------------------------------
*/

 代码如下 复制代码

class mysql {
 private $server; //服务器名
 private $user; //数据库用户名
 private $password; //数据库密码
 private $database; //数据库名
 private $link; //mysql连接标识符
 private $charset = "utf8"; //数据库编码,默认为utf8

 /*=====================================================
  * 方法:__construct
  * 功能:构造函数
  * 参数:$server,$user,$password,$database,$charset
  * 说明:实例化时自动连接数据库.
  ====================================================*/
 function __construct($server, $user, $password, $database, $charset) {
  $this->server = $server;
  $this->user = $user;
  $this->password = $password;
  $this->database = $database;
  $this->charset = $charset;
  $this->connect();
 }

 /*====================================================
  * 方法:connect
  * 功能:连接数据库
  * 参数:无
  * 说明:连接mysql服务器,连接数据库,设置字符编码
  ===================================================*/
 function connect() {
  $this->link = mysql_connect($this->server, $this->user, $this->password) or die($this->error("数据库服务器连接出错!"));
  mysql_select_db($this->database, $this->link) or die($this->error("数据库连接出错!"));
  mysql_query("set names '$this->charset'");
 }

 /*===================================================
  * 方法:query
  * 功能:执行sql
  * 参数:$sql
  * 说明:对传过来的sql语句执行,并返回结果$result资源标识符
  ==================================================*/
 function query($sql) {
  $result = mysql_query($sql, $this->link);
  if (!$result) {
   $this->error($sql . "语句执行失败!");
   return false;
  } else {
   return $result;
  }
 } 
 
 /*===================================================
  * 方法:fetcharray
  * 功能:从结果集中取一行做为数组
  * 参数:$result资源标识符
  * 说明:需要提供sql语句执行返回的资源标识符
  ==================================================*/
 function fetcharray($result) {
  return mysql_fetch_array($result);
 }

 /*===================================================
  * 方法:fetchall
  * 功能:从结果集中取出所有记录做为二维数组$arr
  * 参数:$result资源标识符
  * 说明:循环取所有记录保存为$arr
  ==================================================*/
 function fetchall($result) {
  $arr[] = array ();
  while ($row = mysql_fetch_array($result)) {
   $arr[] = $row;
  }
  mysql_free_result($result);
  return $arr;
 }

 /*===================================================
  * 方法:numrows
  * 功能:统计结果集中记录数
  * 参数:$result资源标识符
  * 说明:统计行数
  ==================================================*/
 function numrows($result) {
  return mysql_num_rows($result);
 }

 /*===================================================
  * 方法:numfields
  * 功能:统计结果集中字段数
  * 参数:$result资源标识符
  * 说明:统计字段数
  ==================================================*/
 function numfields($result) {
  return mysql_num_fields($result);
 }

 /*===================================================
  * 方法:affectedrows
  * 功能:取得前一次mysql操作所影响的记录行数
  * 参数:无
  * 说明:取得前一次mysql操作所影响的记录行数
  ==================================================*/
 function affectedrows() {
  return mysql_affected_rows($this->link);
 }

 /*===================================================
  * 方法:version
  * 功能:取得mysql版本
  * 参数:无
  * 说明:取得当前数据库服务器mysql的版本
  ==================================================*/
 function version() {
  return mysql_get_server_info();
 }

 /*===================================================
  * 方法:insertid
  * 功能:取得上一步insert操作产生的id
  * 参数:无
  * 说明:取得上一步insert操作产生的自增字段id
  ==================================================*/
 function insertid() {
  return mysql_insert_id($this->link);
 }
 
 /*===================================================
  * 方法:checksql
  * 功能:检查sql语句
  * 参数:sql语句
  * 说明:关闭非永久数据库连接
  ==================================================*/
 function checksql($db_string, $querytype = 'select') {
        $clean = '';
        $old_pos = 0;
        $pos = - 1;

        //如果是普通查询语句,直接过滤一些特殊语法
        if ($querytype == 'select') {
            $notallow1 = "[^0-9a-z@._-]{1,}(union|sleep|benchmark|load_file|outfile)[^0-9a-z@.-]{1,}";

            //$notallow2 = "--|/*";
            if (eregi ( $notallow1, $db_string )) {
                exit ( "<font size='5' color='red'>safe alert: request error step 1 !</font>" );
            }
        }

        //完整的sql检查
        while ( true ) {
            $pos = strpos ( $db_string, ''', $pos + 1 );
            if ($pos === false) {
                break;
            }
            $clean .= substr ( $db_string, $old_pos, $pos - $old_pos );
            while ( true ) {
                $pos1 = strpos ( $db_string, ''', $pos + 1 );
                $pos2 = strpos ( $db_string, '', $pos + 1 );
                if ($pos1 === false) {
                    break;
                } elseif ($pos2 == false || $pos2 > $pos1) {
                    $pos = $pos1;
                    break;
                }
                $pos = $pos2 + 1;
            }
            $clean .= '$s$';
            $old_pos = $pos + 1;
        }
        $clean .= substr ( $db_string, $old_pos );
        $clean = trim ( strtolower ( preg_replace ( array ('~s+~s' ), array (' ' ), $clean ) ) );

        //老版本的mysql并不支持union,常用的程序里也不使用union,但是一些黑客使用它,所以检查它
        if (strpos ( $clean, 'union' ) !== false && preg_match ( '~(^|[^a-z])union($|[^[a-z])~s', $clean ) != 0) {
            $fail = true;
        }

        //发布版本的程序可能比较少包括--,#这样的注释,但是黑客经常使用它们
        elseif (strpos ( $clean, '/*' ) > 2 || strpos ( $clean, '--' ) !== false || strpos ( $clean, '#' ) !== false) {
            $fail = true;
        }

        //这些函数不会被使用,但是黑客会用它来操作文件,down掉数据库
        elseif (strpos ( $clean, 'sleep' ) !== false && preg_match ( '~(^|[^a-z])sleep($|[^[a-z])~s', $clean ) != 0) {
            $fail = true;
        } elseif (strpos ( $clean, 'benchmark' ) !== false && preg_match ( '~(^|[^a-z])benchmark($|[^[a-z])~s', $clean ) != 0) {
            $fail = true;
        } elseif (strpos ( $clean, 'load_file' ) !== false && preg_match ( '~(^|[^a-z])load_file($|[^[a-z])~s', $clean ) != 0) {
            $fail = true;
        } elseif (strpos ( $clean, 'into outfile' ) !== false && preg_match ( '~(^|[^a-z])intos+outfile($|[^[a-z])~s', $clean ) != 0) {
            $fail = true;
        }

        //老版本的mysql不支持子查询,我们的程序里可能也用得少,但是黑客可以使用它来查询数据库敏感信息
        elseif (preg_match ( '~([^)]*?select~s', $clean ) != 0) {
            $fail = true;
        }
        if (! empty ( $fail )) {
            exit ( "<font size='5' color='red'>safe alert: request error step 2!</font>" );
        } else {
            return $db_string;
        }
    }

 /*===================================================
  * 方法:close
  * 功能:关闭连接
  * 参数:无
  * 说明:关闭非永久数据库连接
  ==================================================*/
 function close() {
  mysql_close($this->link);
 }

 /*===================================================
  * 方法:error
  * 功能:提示错误
  * 参数:$err_msg
  * 说明:对给出的错误提示内容给予echo
  ==================================================*/
 function error($err_msg = "") {
  if ($err_msg == "") {
   echo "errno:" . mysql_errno . "</br>";
   echo "error:" . mysql_error . "</br>";
  } else {
   echo $err_msg;
  }
 }

 /*===================================================
  * 方法:__destruct
  * 功能:析构函数
  * 参数:无
  * 说明:释放类,关闭连接
  ==================================================*/
 function __destruct() {
  $this->close();
 }
}

//数据库连接函数
function conn_db(){
 $link_db=new mysql(web_server,web_user,web_pwd,web_db,"utf8");
 return $link_db;
}

本文章收集了四款mysql 分页存储过程实例代码,有高效的分页存储过程以及入门级的和通用的存储过程分页代码,如果你正在学mysql分页存储过程就进来看看吧。

mysql测试版本:5.0.41-community-nt
/*****************************************************
mysql分页存储过程
吴剑 2009-07-02
*****************************************************/
drop procedure if exists pr_pager;
create procedure pr_pager(

    in     p_table_name        varchar(1024),        /*表名*/
    in     p_fields            varchar(1024),        /*查询字段*/
    in     p_page_size            int,                /*每页记录数*/
    in     p_page_now            int,                /*当前页*/
    in     p_order_string        varchar(128),        /*排序条件(包含order关键字,可为空)*/
    in     p_where_string        varchar(1024),        /*where条件(包含where关键字,可为空)*/
     out     p_out_rows            int                    /*输出记录总数*/
   
)
    not deterministic
     sql security definer
     comment '分页存储过程'
   
begin

    /*定义变量*/
    declare m_begin_row int default 0;
    declare m_limit_string char(64);

    /*构造语句*/   
    set m_begin_row = (p_page_now - 1) * p_page_size;
    set m_limit_string = concat(' limit ', m_begin_row, ', ', p_page_size);
   
    set @count_string = concat('select count(*) into @rows_total from ', p_table_name, ' ', p_where_string);
    set @main_string = concat('select ', p_fields, ' from ', p_table_name, ' ', p_where_string, ' ', p_order_string, m_limit_string);

    /*预处理*/
    prepare count_stmt from @count_string;
    execute count_stmt;
    deallocate prepare count_stmt;
    set p_out_rows = @rows_total;

    prepare main_stmt from @main_string;
    execute main_stmt;
    deallocate prepare main_stmt;
   
end

一款高效的存储过程分页代码

存储过程分页的基本原理:我们先对查找到的记录集(支持输入查找条件_whereclause和排列条件_orderby)的key字段临时存放到临时表,然后构建真正的记录集输出。

create   procedure   `mysqltestuser_select_pageable`(
        _whereclause   varchar(2000),     --   查找条件
        _orderby   varchar(2000),     --   排序条件
        _pagesize     int   ,       --   每页记录数
        _pageindex   int   ,     --   当前页码
        _docount       bit       --   标志:统计数据/输出数据
)
        not   deterministic
        sql   security   definer
        comment   ' '
begin
  --   定义key字段临时表
  drop   table   if   exists   _temptable_keyid;     --   删除临时表,如果存在
  create   temporary     table     _temptable_keyid
  (
userid   int
  )type=heap;

  --   构建动态的sql,输出关键字key的id集合
  --   查找条件
  set   @sql   =   'select     userid   from   mysqltestuser ';
  if   (_whereclause   is   not   null)     and   (_whereclause   <>   ' ')   then
  set   @sql=   concat(@sql,   '   where   '   ,_whereclause);
  end   if;

  if   (_orderby   is   not   null)     and     (_orderby   <> ' ')   then
  set   @sql=   concat(   @sql   ,   '   order   by   '   ,   _orderby);
  end   if;

  --   准备id记录插入到临时表
  set   @sql=concat( 'insert   into   _temptable_keyid(userid) ',   @sql);
  prepare   stmt   from   @sql;
  execute   stmt   ;
  deallocate   prepare   stmt;
--   key的id集合     [end]

--   下面是输出
if   (_docount=1)   then     --   统计
          begin
                    select   count(*)   as   recordcount   from   _temptable_keyid;
          end;
else                                   --   输出记录集
          begin
                  --   计算记录的起点位置
  set   @startpoint   =   ifnull((_pageindex-1)*_pagesize,0);
                  set   @sql= '                 select           a.*
      from       mysqltestuser   a
      inner   join   _temptable_keyid   b
      on     a.userid   =b.userid     ';

  set   @sql=concat(@sql, "     limit     ",@startpoint, "   , ",_pagesize);
                  prepare   stmt   from   @sql;
  execute   stmt   ;
  deallocate   prepare   stmt;
          end;
end   if;

  drop   table   _temptable_keyid;
end;


下面是mysqltestuser表的ddl:

create   table   `mysqltestuser`   (
    `userid`   int(11)   not   null   auto_increment,
    `name`   varchar(50)   default   null,
    `chinesename`   varchar(50)   default   null,
    `registerdatetime`   datetime   default   null,
    `jf`   decimal(20,2)   default   null,
    `description`   longtext,
    primary   key     (`userid`)
)   engine=innodb   default   charset=gb2312;


插入些数据:
insert   into   `mysqltestuser`   (`userid`,   `name`,   `chinesename`,   `registerdatetime`,   `jf`,   `description`)   values  
    (1, 'xuu1 ', 'www.aimeige.com.cn ', '2007-03-29   12:54:41 ',1.5, 'description1 '),
    (2, 'xuu2 ', 'www.111cn.net ', '2007-03-29   12:54:41 ',2.5, 'description2 '),

 

存储过程调用测试:

--   方法原型     `mysqltestuser_select_pageable`(条件,排列顺序,每页记录数,第几页,是否统计数据)
--   call   `mysqltestuser_select_pageable`(_whereclause   ,_orderby   ,_pagesize   ,_pageindex   ,   _docount)

--   统计数据
call   `mysqltestuser_select_pageable`(null,   null,   null,   null,   1)
--   输出数据,没条件限制,10条记录/页,第一页
call   `mysqltestuser_select_pageable`(null,   null,   10,   1,0)
--   输出数据,条件限制,排列,   10条记录/页,第一页
call   `mysqltestuser_select_pageable`( 'chinesename   like   ' '%飞3% ' ' ',   'userid   asc ',   10,   1,   0)


一款mysql .net的方法

mysql + asp教程.net来写网站,既然mysql已经支持存储过程了,那么像分页这么常用的东西,当然要用存储过程啦!
  不过在网上找了一些,发现都有一个特点——就是不能传出总记录数,干脆自己研究吧。终于,算是搞出来了,效率可能不是很好,但是我也觉得不错了。贴代码吧直接:也算是对自己学习mysql的一个记录。
  create procedure p_pagelist
  (
  m_pageno int ,
  m_perpagecnt int ,
  m_column varchar(1000) ,
  m_table varchar(1000) ,
  m_condition varchar(1000),
  m_orderby varchar(200) ,
  out m_totalpagecnt int
  )
  begin
  set @pagecnt = 1; -- 总记录数
  set @limitstart = (m_pageno - 1)*m_perpagecnt;
  set @limitend = m_perpagecnt;
  set @sqlcnt = concat('select count(1) into @pagecnt from ',m_table); -- 这条语句很关键,用来得到总数值
  set @sql = concat('select ',m_column,' from ',m_table);
  if m_condition is not null and m_condition <> '' then
  set @sql = concat(@sql,' where ',m_condition);
  set @sqlcnt = concat(@sqlcnt,' where ',m_condition);
  end if;
  if m_orderby is not null and m_orderby <> '' then
  set @sql = concat(@sql,' order by ',m_orderby);
  end if;
  set @sql = concat(@sql, ' limit ', @limitstart, ',', @limitend);
  prepare s_cnt from @sqlcnt;
  execute s_cnt;
  deallocate prepare s_cnt;
  set m_totalpagecnt = @pagecnt;
  prepare record from @sql;
  execute record;
  deallocate prepare record;
  end

方法四

mysql的通用存储过程,本着共享的精神,为大家奉献这段mysql分页查询通用存储过程,假设所用数据库教程为guestbook:

use guestbook;
delimiter $$
drop procedure if exists prc_page_result $$
create procedure prc_page_result (
in currpage      int,
in columns       varchar(500),
in tablename     varchar(500),
in scondition    varchar(500),
in order_field   varchar(100),
in asc_field     int,
in primary_field varchar(100),
in pagesize      int
)
begin
    declare stemp  varchar(1000);
    declare ssql   varchar(4000);
    declare sorder varchar(1000);
   
    if asc_field = 1 then
        set sorder = concat( order by , order_field, desc );
        set stemp  = <(select min;
    else
        set sorder = concat( order by , order_field, asc );
        set stemp  = >(select max;
    end if;
   
    if currpage = 1 then
        if scondition <> then
            set ssql = concat(select , columns, from , tablename, where );
            set ssql = concat(ssql, scondition, sorder, limit ?);
        else
            set ssql = concat(select , columns, from , tablename, sorder, limit ?);
        end if;
    else
        if scondition <> then
            set ssql = concat(select , columns, from , tablename);
            set ssql = concat(ssql, where , scondition, and , primary_field, stemp);
            set ssql = concat(ssql, (, primary_field, ), from (select );
            set ssql = concat(ssql, , primary_field, from , tablename, sorder);
            set ssql = concat(ssql, limit , (currpage-1)*pagesize, ) as tabtemp), sorder);
            set ssql = concat(ssql, limit ?);
        else
            set ssql = concat(select , columns, from , tablename);
            set ssql = concat(ssql, where , primary_field, stemp);
            set ssql = concat(ssql, (, primary_field, ), from (select );
            set ssql = concat(ssql, , primary_field, from , tablename, sorder);
            set ssql = concat(ssql, limit , (currpage-1)*pagesize, ) as tabtemp), sorder);
            set ssql = concat(ssql, limit ?);
        end if;
    end if;
    set @ipagesize = pagesize;
    set @squery = ssql;
    prepare stmt from @squery;
    execute stmt using @ipagesize;
end;
$$
delimiter;
可以存储为数据库脚本,然后用命令导入:

mysql -u root -p < pageresult.sql;

调用:call prc_page_result(1, "*", "tablename", "", "columnname", 1, "pkid", 25);


*/
?>

下面这款mysql数据库连接文章,是我从一个cms搞下来的,很完整的。直接调用就OK了。
 代码如下 复制代码

class dbmysq {

 var $querynum = 0;
 var $link;
 var $histories;
 var $time;
 var $tablepre;

 function connect($dbhost, $dbuser, $dbpw, $dbname = '', $dbcharset, $pconnect = 0, $tablepre='', $time = 0) {
  $this->time = $time;
  $this->tablepre = $tablepre;
  if ($pconnect) {
   if (!$this->link = mysql_pconnect($dbhost, $dbuser, $dbpw)) {
    $this->halt('can not connect to mysql server');
   }
  } else {
   if (!$this->link = mysql_connect($dbhost, $dbuser, $dbpw, 1)) {
    $this->halt('can not connect to mysql server');
   }
  }

  if ($this->version() > '4.1') {
   if ($dbcharset) {
    mysql_query("set character_set_connection=" . $dbcharset . ", character_set_results=" . $dbcharset . ", character_set_client=binary", $this->link);
   }

   if ($this->version() > '5.0.1') {
    mysql_query("set sql_mode=''", $this->link);
   }
  }

  if ($dbname) {
   mysql_select_db($dbname, $this->link);
  }
 }

 function fetch_array($query, $result_type = mysql_assoc) {
  return mysql_fetch_array($query, $result_type);
 }

 function result_first($sql, &$data) {
  $query = $this->query($sql);
  $data = $this->result($query, 0);
 }

 function fetch_first($sql, &$arr) {
  $query = $this->query($sql);
  $arr = $this->fetch_array($query);
 }

 function fetch_all($sql, &$arr) {
  $query = $this->query($sql);
  while ($data = $this->fetch_array($query)) {
   $arr[] = $data;
  }
 }

 function cache_gc() {
  $this->query("delete from {$this->tablepre}sqlcaches where expiry<$this->time");
 }

 function query($sql, $type = '', $cachetime = false) {
  $func = $type == 'unbuffered' && @function_exists('mysql_unbuffered_query') ? 'mysql_unbuffered_query' : 'mysql_query';
  if (!($query = $func($sql, $this->link)) && $type != 'silent') {
   $this->halt('mysql query error', $sql);
  }
  $this->querynum++;
  $this->histories[] = $sql;
  return $query;
 }

 function affected_rows() {
  return mysql_affected_rows($this->link);
 }

 function error() {
  return (($this->link) ? mysql_error($this->link) : mysql_error());
 }

 function errno() {
  return intval(($this->link) ? mysql_errno($this->link) : mysql_errno());
 }

 function result($query, $row) {
  $query = @mysql_result($query, $row);
  return $query;
 }

 function num_rows($query) {
  $query = mysql_num_rows($query);
  return $query;
 }

 function num_fields($query) {
  return mysql_num_fields($query);
 }

 function free_result($query) {
  return mysql_free_result($query);
 }

 function insert_id() {
  return ($id = mysql_insert_id($this->link)) >= 0 ? $id : $this->result($this->query("select last_insert_id()"), 0);
 }

 function fetch_row($query) {
  $query = mysql_fetch_row($query);
  return $query;
 }

 function fetch_fields($query) {
  return mysql_fetch_field($query);
 }

 function version() {
  return mysql_get_server_info($this->link);
 }

 function close() {
  return mysql_close($this->link);
 }

 function halt($message='', $sql='') {
  exit('<br/>提示:数据库错误<br/>sql语句:' . $sql . '<br/>错误关键字:' . mysql_error());
 }

}

?>

本文章提供一款php分页代码,这是一款比较简单也常的limit进来分页了,同时他还带有条件查询分页功能。
 代码如下 复制代码

$conn=mysql_connect($mysql_host,$mysql_user,$mysql_password) or die('连接服务器出错');
mysql_select_db($mysql_db) or die("选择数据库教程出错");
mysql_query("set names 'gbk'");
function table($t)
{
 global $mysql_table_prefix;
 return $mysql_table_prefix.$t;
}


$sql="select * from ".table('keywords')."  where 1=1 ";
$sql2="select count(*) from ".table('keywords')."  where 1=1 ";
$py=trim($_request['py']);
if($act=="search" and !empty($_post['s1']))
{
 $s1=trim($_post['s1']);//获取搜索字
 $sql .=" and (k1='$s1' or k2='$s1') ";
 $sql2 .=" and (k1='$s1' or k2='$s1') ";
}
elseif(!empty($py))
{
 $sql .=" and pinyin='$py' ";
 $sql2.=" and pinyin='$py' ";
}


$sql .=" order by pinyin ";
$rscount=mysql_query($sql2);
$rscount=@mysql_fetch_array($rscount);
$rscount=$rscount[0];//获取总记录数

$page=trim($_get['page']);//当前页数
$pagesize=30;//每页记录数
$pagecount=ceil($rscount/$pagesize);//获取总页数
$pageurl="";
if($page<=1)
{
 $page=1;
 $pageurl.=" 首页 上一页";
}else
{
 $pageurl .=" <a href='?page=1&py=".$py."'>首页</a> &nbsp;<a href='?py=".$py."&page=".($page-1)."'>上一页</a>";
}
if($page>=$pagecount)
{
 $page=$pagecount;
 $pageurl .=" 下一页&nbsp; 尾页";
}else
{
 $pageurl .=" <a href='?py=".$py."&page=".($page+1)."'>下一页</a> &nbsp;<a href='?py=".$py."&page=".$pagecount."'>尾页</a>";
}

$start_rs=($page-1)*$pagesize;//开始
$end_rs=$page*$pagesize;//结束
$sql .=" limit {$start_rs},{$end_rs} ";
$res=mysql_query($sql);

?>

mysql_affected_rows: 得到 mysql 最后操作影响的列数目。
mysql_close: 关闭 mysql 伺服器连线。
mysql_connect: 开启 mysql 伺服器连线。
mysql_create_db: 建立一个 mysql 新资料库。
mysql_data_seek: 移动内部传回指标。
mysql_db_query: 送查询字串 (query) 到 mysql 资料库。
mysql_drop_db: 移除资料库。
mysql_errno: 传回错误讯息代码。
mysql_error: 传回错误讯息。
mysql_fetch_array: 传回阵列资料。
mysql_fetch_field: 取得栏位资讯。
mysql_fetch_lengths: 传回单列各栏资料最大长度。
mysql_fetch_object: 传回物件资料。
mysql_fetch_row: 传回单列的各栏位。
mysql_field_name: 传回指定栏位的名称。
mysql_field_seek: 设定指标到传回值的某栏位。
mysql_field_table: 获得目前栏位的资料表 (table) 名称。
mysql_field_type: 获得目前栏位的型态。
mysql_field_flags: 获得目前栏位的旗标。
mysql_field_len: 获得目前栏位的长度。
mysql_free_result: 释放传回占用记忆体。
mysql_insert_id: 传回最后一次使用 insert 指令的 id。
mysql_list_fields: 列出指定资料表的栏位 (field)。
mysql_list_dbs: 列出 mysql 伺服器可用的资料库 (database)。
mysql_list_tables: 列出指定资料库的资料表 (table)。
mysql_num_fields: 取得传回栏位的数目。
mysql_num_rows: 取得传回列的数目。
mysql_pconnect: 开启 mysql 伺服器长期连线。
mysql_query: 送出一个 query 字串。
mysql_result: 取得查询 (query) 的结果。
mysql_select_db: 选择一个资料库。
mysql_tablename: 取得资料表名称。

看个连接实例

 代码如下 复制代码
<?php
$mysql_url = "localhost:3306";
$mysql_user = "root";
$mysql_passwd = "root";
$link = @mysql_pconnect($mysql_url,$mysql_user,$mysql_passwd);
@mysql_query("set names 'gbk'"); //设置编码格式
@mysql_close($link)
?>

php连接mysql数据库:这里用mysql_connect函数来连接:

例子:

 代码如下 复制代码
<?
 $link = mysql_connect("localhost","root","sa") or die ('连接mysql数据库失败'.mysql_error());//用mysql连接数据库,如果失败输入错误原因
 if($link){
  echo "mysql数据库连接成功";//如果连接成功,给出提示
 }
?>


在 php 中,这个任务通过 mysql_connect() 函数完成。

语法
mysql_connect(servername,username,password);参数 描述
servername 可选。规定要连接的服务器。默认是 "localhost:3306′。
username 可选。规定登录所使用的用户名。默认值是拥有服务器进程的用户的名称。
password 可选。规定登录所用的密码。默认是 ""。

注释:虽然还存在其他的参数,但上面列出了最重要的参数。请访问 w3school 提供的 php mysql 参考手册,获得更多的细节信息。

例子
在下面的例子中,我们在一个变量中 ($con) 存放了在脚本中供稍后使用的连接。如果连接失败,将执行 "die" 部分:

 代码如下 复制代码
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('could not connect: ' . mysql_error());
  }

// some code

?>关闭连接
脚本一结束,就会关闭连接。如需提前关闭连接,请使用 mysql_close() 函数。

 代码如下 复制代码

<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('could not connect: ' . mysql_error());
  }

// some code

mysql_close($con);

[!--infotagslink--]

相关文章

  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • php简单数据操作的实例

    最基础的对数据的增加删除修改操作实例,菜鸟们收了吧...2013-09-26
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • 解决Mybatis 大数据量的批量insert问题

    这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
  • Antd-vue Table组件添加Click事件,实现点击某行数据教程

    这篇文章主要介绍了Antd-vue Table组件添加Click事件,实现点击某行数据教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-17
  • 详解如何清理redis集群的所有数据

    这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
  • Intellij IDEA连接Navicat数据库的方法

    这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
  • 在数据库里将毫秒转换成date格式的方法

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
  • vue 获取到数据但却渲染不到页面上的解决方法

    这篇文章主要介绍了vue 获取到数据但却渲染不到页面上的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-19
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 如何解决局域网内mysql数据库连接慢

    通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
  • php把读取xml 文档并转换成json数据代码

    在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
  • MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
  • mybatis-plus 处理大数据插入太慢的解决

    这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-18
  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
  • Mysql数据库错误代码中文详细说明

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
  • postgresql数据添加两个字段联合唯一的操作

    这篇文章主要介绍了postgresql数据添加两个字段联合唯一的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
  • c#异步读取数据库与异步更新ui的代码实现

    这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
  • Vue生命周期activated之返回上一页不重新请求数据操作

    这篇文章主要介绍了Vue生命周期activated之返回上一页不重新请求数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26