❶ PHP网站怎么连接到数据库
常规方式
常规方式就是按部就班的读取文件了。其余的话和上述方案一致。
// 读取配置文件内容
$handle = fopen("filepath", "r"); $content = fread($handle, filesize("filepath"));123
PHP解析XML
上述两种读取文件,其实都是为了PHP解析XML来做准备的。关于PHP解析XML的方式的博客有很多。方式也有很多,像simplexml,XMLReader,DOM啦等等。但是对于比较小型的xml配置文件,simplexml就足够了。
配置文件
<?xml version="1.0" encoding="UTF-8" ?><mysql>
<!-- 为防止出现意外,请按照此标准顺序书写.其实也无所谓了 -->
<host>localhost</host>
<user>root</user>
<password>123456</password>
<db>test</db>
<port>3306</port></mysql>12345678910
解析
<?php/**
* 作为解析XML配置文件必备工具
*/class XMLUtil {
public static $dbconfigpath = "./db.config.xml"; public static function getDBConfiguration() {
$dbconfig = array (); try { // 读取配置文件内容
$handle = fopen(self::$dbconfigpath, "r"); $content = fread($handle, filesize(self::$dbconfigpath)); // 获取xml文档根节点,进而获取相关的数据库信息
$mysql = simplexml_load_string($content); // 将获取到的xml节点信息赋值给关联数组,方便接下来的方法调用
$dbconfig['host'] = $mysql->host; $dbconfig['user'] = $mysql->user; $dbconfig['password'] = $mysql->password; $dbconfig['db'] = $mysql->db; $dbconfig['port'] = $mysql->port; // 将配置信息以关联数组的形式返回
return $dbconfig;
} catch ( Exception $e ) { throw new RuntimeException ( "<mark>读取数据库配置文件信息出错!</mark><br />" );
} return $dbconfig;
}
}
数据库连接池
对于PHP程序而言,优化永无止境。而数据库连接池就在一定程度上起到了优化的作用。其使得对用户的每一个请求而言,无需每次都像数据库申请链接资源。而是通过已存在的数据库连接池中的链接来返回,从时间上,效率上,都是一个大大的提升。
于是,这里简单的模拟了一下数据库连接池的实现。核心在于维护一个“池”。
从池子中取,用毕,归还给池子。
<?php/**x
* PHP中的数据库 工具类设计
* 郭璞
* 2016年12月23日
*
**/class DbHelper { private $dbconfig; private $dbpool; public $poolsize; public function __construct($poolsize = 20) { if (! file_exists ( "./utils.php" )) { throw new RuntimeException ( "<mark>utils.php文件丢失,无法进行配置文件的初始化操作!</mark><br />" );
}else {
require './utils.php';
} // 初始化 配置文件信息
$this->dbconfig = XMLUtil::getDBConfiguration (); // 准备好数据库连接池“伪队列”
$this->poolsize = $poolsize;
$this->dbpool = array (); for($index = 1; $index <= $this->poolsize; $index ++) {
$conn = mysqli_connect ( $this->dbconfig ['host'], $this->dbconfig ['user'], $this->dbconfig ['password'], $this->dbconfig ['db'] ) or die ( "<mark>连接数据库失败!</mark><br />" );
array_push ( $this->dbpool, $conn );
}
} /**
* 从数据库连接池中获取一个数据库链接资源
*
* @throws ErrorException
* @return mixed
*/
public function getConn() { if (count ( $this->dbpool ) <= 0) { throw new ErrorException ( "<mark>数据库连接池中已无链接资源,请稍后重试!</mark>" );
} else { return array_pop ( $this->dbpool );
}
} /**
* 将用完的数据库链接资源放回到数据库连接池
*
* @param unknown $conn
* @throws ErrorException
*/
public function release($conn) { if (count ( $this->dbpool ) >= $this->poolsize) { throw new ErrorException ( "<mark>数据库连接池已满</mark><br />" );
} else {
array_push ( $this->dbpool, $conn );
}
}
}
❷ php 连接数据库类
我也刚刚学PHP,正在研究中,虽然你只给10分........
首先,将代码保存到一个文件,如:mysql.class.php
其次,在一个常用的文件里调用:比如头部文件header.php,因为我放在根目录所以用下面方式导入其他文件:
require dirname(__FILE__) . 'include/config.php';
//导入类文件
require dirname(__FILE__) . 'include/mysql.class.php';
//定义一个类及初始化数据库类
$db = new mysql($db_host, $db_user, $db_pass, $db_name);
$db_host = $db_user = $db_pass = $db_name = NULL;
然后,在test.php文件调用:
require_once dirname(__FILE__) . '/header.php';
使用方法:
$sql = "读取表";
$res = $db->query($sql);
$info = array();//定义数组
while($row=$db->fetchRow($res))
{
$arr['id'] = $row['id'];
$arr['title'] = $row['title'];
$info[] = $arr;
}
可以在显示的地方用:
foreach($info as $i)
{
echo $i['title']."<br />";
}
或是直接使用while
还用另一种调用方式:
$here_area = $db->getRow("select areaid,areaname from {$table}area where areaid='$areaid'");
$here[] = array('name'=>$here_area['areaname'],'id'=>$here_area['areaid']);
测试通过,因为我正在使用.....................................
config.php代码:
<?php
$db_host = "localhost";
$db_name = "test";
$db_user = "root";
$db_pass = "";
$table = "mini_";
$charset = "gb2312";
$dbcharset = "gbk";
?>
mysql.class.php代码:
<?php
class mysql
{
var $link = NULL;
//自动执行__construct php5类构建方法,如果PHP4和PHP5同时使用会自动使用PHP5的方法
function __construct($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
//自动执行时调用mysql函数
$this->mysql($dbhost, $dbuser, $dbpw, $dbname, $pconnect, $quiet);
}
//php4类构建方法,如果没有 __construct 就自动执行此功能
function mysql($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
if ($quiet)
{
$this->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, $quiet);
}
else
{
$this->settings = array(
'dbhost' => $dbhost,
'dbuser' => $dbuser,
'dbpw' => $dbpw,
'dbname' => $dbname,
'charset' => $charset,
'pconnect' => $pconnect
);
}
}
function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
global $dbcharset;
if ($pconnect)
{
if (!($this->link = @mysql_pconnect($dbhost, $dbuser, $dbpw)))
{
if (!$quiet)
{
$this->ErrorMsg("Can't pConnect MySQL Server($dbhost)!");
}
return false;
}
}
else
{
if (PHP_VERSION >= '4.2')
{
$this->link = @mysql_connect($dbhost, $dbuser, $dbpw, true);
}
else
{
$this->link = @mysql_connect($dbhost, $dbuser, $dbpw);
mt_srand((double)microtime() * 1000000);
}
if (!$this->link)
{
if (!$quiet)
{
$this->ErrorMsg("Can't Connect MySQL Server($dbhost)!");
}
return false;
}
}
$this->dbhash = md5($this->root_path . $dbhost . $dbuser . $dbpw . $dbname);
$this->version = mysql_get_server_info($this->link);
if ($this->version > '4.1')
{
if ($dbcharset != 'latin1')
{
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)
{
if (mysql_select_db($dbname, $this->link) === false )
{
if (!$quiet)
{
$this->ErrorMsg("Can't select MySQL database($dbname)!");
}
return false;
}
else
{
return true;
}
}
else
{
return true;
}
}
function query($sql, $type = '')
{
if ($this->link === NULL)
{
$this->connect($this->settings['dbhost'], $this->settings['dbuser'], $this->settings['dbpw'], $this->settings['dbname'], $this->settings['charset'], $this->settings['pconnect']);
$this->settings = array();
}
if ($this->queryCount++ <= 99)
{
$this->queryLog[] = $sql;
}
if ($this->queryTime == '')
{
if (PHP_VERSION >= '5.0.0')
{
$this->queryTime = microtime(true);
}
else
{
$this->queryTime = microtime();
}
}
if (!($query = mysql_query($sql, $this->link)) && $type != 'SILENT')
{
$this->error_message[]['message'] = 'MySQL Query Error';
$this->error_message[]['sql'] = $sql;
$this->error_message[]['error'] = mysql_error($this->link);
$this->error_message[]['errno'] = mysql_errno($this->link);
$this->ErrorMsg();
return false;
}
return $query;
}
function affected_rows()
{
return mysql_affected_rows($this->link);
}
function num_fields($query)
{
return mysql_num_fields($query);
}
function error()
{
return mysql_error($this->link);
}
function errno()
{
return mysql_errno($this->link);
}
function num_rows($query)
{
return mysql_num_rows($query);
}
function insert_id()
{
return mysql_insert_id($this->link);
}
function fetchRow($query)
{
return mysql_fetch_assoc($query);
}
function fetcharray($query)
{
return mysql_fetch_array($query);
}
function version()
{
return $this->version;
}
function close()
{
return mysql_close($this->link);
}
function ErrorMsg($message = '', $sql = '')
{
if ($message)
{
echo "$message\n\n";
}
else
{
echo "<b>MySQL server error report:";
print_r($this->error_message);
}
exit;
}
function getCol($sql)
{
$res = $this->query($sql);
if ($res !== false)
{
$arr = array();
while ($row = mysql_fetch_row($res))
{
$arr[] = $row[0];
}
return $arr;
}
else
{
return false;
}
}
function getOne($sql, $limited = false)
{
if ($limited == true)
{
$sql = trim($sql . ' LIMIT 1');
}
$res = $this->query($sql);
if ($res !== false)
{
$row = mysql_fetch_row($res);
if ($row !== false)
{
return $row[0];
}
else
{
return '';
}
}
else
{
return false;
}
}
function getAll($sql)
{
$res = $this->query($sql);
if ($res !== false)
{
$arr = array();
while ($row = mysql_fetch_assoc($res))
{
$arr[] = $row;
}
return $arr;
}
else
{
return false;
}
}
//使用: getRow($sql,true) 如果有true那值是 limit 1,读取一条信息
function getRow($sql, $limited = false)
{
if ($limited == true)
{
$sql = trim($sql . ' LIMIT 1');
}
$res = $this->query($sql);
if ($res !== false)
{
return mysql_fetch_assoc($res);
}
else
{
return false;
}
}
}
?>
❸ PHP源代码连接数据库
数据库有很多种类:mysql,oracle,mssql,db2等等。PHP操作数据库的时候,要保证该类型数据库的扩展已开启。这里连接的数据库以mysql为例:
<?php
//数据库服务器地址
$host="localhost";
//连接数据库用户名
$uname="root";
//连接数据库密码
$upass="";
//连接数据库
$conn=mysql_connect($host,$uname,$upass);
//判断连接
if(!$conn){
die("连接数据库失败!").mysql_errno();
}
//连接成功,其他操作省略
?>
❹ php怎么连接access数据库
(1)创建系统数据源,用PHP提供的ODBC函数。
(2)使用PHP的ODBC函数,但不创建数据源。
PHP使用ODBC连接Access 数据库的方法。用$connstr="DRIVER= Microsoft Access Driver (*.mdb)来设置数据驱动,函数realpath()用来取得数据库的相对路径。利用该方法连接Access数据库主要应用到PHP的 odbc_connect()函数,该函数声明如下:
以下为引用的内容:
resourse odbc_connect( string dsn, string user, string password [, int cursor_type])
dsn:系统dsn名称
user:数据库服务器某用户名。
password:数据库服务器某用户密码。
cursor_type:游标类型。
代码如下:
以下为引用的内容:
$connstr="DRIVER=Microsoft Access Driver (*.mdb);
DBQ=".realpath("bookinfo.mdb");
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC );
(3)使用微软的ADODB数据库驱动。
定义类COM来使用ADO方法操纵Access数据库的。
该类详细说明如下:
以下为引用的内容:
string com::com( string mole_name [, string server_name [, int codepage]])
mole_name:被请求组件的名字或class-id。
server_name:DCOM服务器的名字。
Codepage:指定用于将PHP字符串转换成UNICODE字符串的代码页,反之亦然。该参数的取值有CP_ACP、CP_MACCP、CP_OEMCP、CP_SYMBOL、CP_THREAD_ACP、CP_UTF7和CP_UTF8。
PHP利用com类并使用ADO方法访问数据库的代码如下:
以下为引用的内容:
$conn = new com("ADODB.Connection");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("bookinfo.mdb ");
$conn->Open($connstr);
❺ php连接数据库的类,但是选择数据库的时候总是出错,怎么回事呢
构造函数错咯
function__construct($host,$user,$pass,$database){
$this->host=$host;
$this->user=$user;
$this->pass=$pass;
$this->database=$database;
//echo$db;
$conn=mysql_connect($host,$user,$pass);
$db=mysql_select_db($this->database,$conn);
if($db){
echo"数据库成功";
}else{
echo"数据库失败";
}
}
//给你改咯哈这个类
classregister{
private$host;//Thehostaddress
private$user;//Theuser
private$pass;//Thepassword
private$database;//Thedatabase
private$conn;
//Connectwiththedatabase
function__construct($host,$user,$pass,$database){
$this->host=$host;
$this->user=$user;
$this->pass=$pass;
$this->database=$database;
$conn=mysql_connect($host,$user,$pass)ordie("连接失败!");
mysql_select_db($this->database,$conn)ordie("选择数据库失败!");
$this->conn=$conn;
}
//Addauser
functionaddUser($data){
$dataObj=$data;//类里边不要把变量写得太死
$userInfo=json_decode($dataObj,true);//.
$username=$userInfo[0];
$password=$userInfo[1];
$repassword=$userInfo[2];
//Thesqltoaddthenewuser
@$sql_addUser=<<<EOF
insertintousersvalues("","$username","$password","$repassword");
EOF;
//var_mp($sql_addUser);break;
$result=mysql_query($sql_addUser,$this->conn);//指定连接,少些麻烦
//var_mp($result);break;
if($result){
echo1;
}else{
echo0;
}
}
}
❻ PHp如何连接数据库
PHP链接数据库有几种方式
mysqli:
<?php
$servername="localhost";
$username="username";
$password="password";
//创建连接
$conn=newmysqli($servername,$username,$password);
//检测连接
if($conn->connect_error){
die("连接失败:".$conn->connect_error);
}
echo"连接成功";
?>
也可以使用PDO进行链接,前提是你必须在php.ini中开启PDO:
<?php
$servername="localhost";
$username="username";
$password="password";
try{
$conn=newPDO("mysql:host=$servername;dbname=myDB",$username,$password);
echo"连接成功";
}
catch(PDOException$e)
{
echo$e->getMessage();
}
?>
建议使用PDO,功能更加强大,兼容各种数据库
❼ php如何连接数据库
$mysql_host="localhost";地址
$mysql_user="root";用户名
$mysql_password="123";密码
$mysql_database="001online";数据库名
$conn=mysql_connect("$mysql_host","$mysql_user","$mysql_password");
if(!$conn){die("连接数据库失败:".mysql_error());}
mysql_select_db("$mysql_database",$conn);
mysql_query("setcharacterset'utf-8'");
mysql_query("setnames'utf-8'");
❽ PHP连接数据库的几种方法
用ASP连接各种数据库的方法
一、ASP的对象存取数据库方法
在ASP中,用来存取数据库的对象统称ADO(Active Data Objects),主要含有三种对象:Connection、Recordset 、Command
Connection:负责打开或连接数据
Recordset:负责存取数据表
Command:负责对数据库执行行动查询命令
二、连接各数据库的驱动程序
连接各数据库可以使用驱动程序,也可以使用数据源,不过我建议大家使用驱动程序,因为使用驱动程序非常方便、简单,而使用数据源比较麻烦。
ODBC链接
适合数据库类型 链接方式
access "Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass;"
dBase "Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"
Oracle "Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"
MSSQL server "Driver={sql server};server=servername;database=dbname;uid=sa;pwd=pass;"
MS text "Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"
Visual Foxpro "Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"
MySQL "Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;option=16386;"
OLEDB链接
适合的数据库类型 链接方式
access "Provider=microsoft.jet.oledb.4.0;data source=your_database_path;user id=admin;password=pass;"
Oracle "Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"
MS SQL Server "Provider=SQLOLEDB;data source=machinename;initial catalog=dbname;userid=sa;password=pass;"
MS text "Provider=microsof.jet.oledb.4.0;data source=your_path;Extended Properties′text;FMT=Delimited′"
而我们在一般情况下使用Access的数据库比较多,在这里我建议大家连接Access数据库使用下面的方法:
dim conn
set conn = server.createobject("adodb.connection")
conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath("../db/bbs.mdb")
其中../db/bbs.mdb是你的数据库存放的相对路径!如果你的数据库和ASP文件在同一目录下,你只要这样写就可以了:
dim conn
set conn = server.createobject("adodb.connection")
conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath("bbs.mdb")
有许多初学者在遇到数据库连接时总是会出问题,然而使用上面的驱动程序只要你的数据库路径选对了就不会出问题了。
❾ dw中php怎么连接mysql数据库
首先打开DW,找到数据库 选项卡:
这里是说,要完成连接数据库操作 需要完成3步。那么好,我们按步骤来做:
1、搞定创建站点
点击蓝色“站点”,弹出如下界面
站点命名
服务器技术
编辑和测试文件存放位置,我们都在本地开发的,所以都在本地文件存在的位置就选你网站代码的位置
定义浏览器打开预览时url路径,我这里是:http://localhost/news,注意这个路径一定是可以访问的路径,就是在浏览器中能打开,否则4步的mysql会报连接不成功的操作
是否共享文件,这个是用来团队开发的,点否
OK,下一步,完成,收功。这样我们就完成了第一步,多出来一个√,增加了一个第四步。
2、搞定文档类型
点击蓝色“文档类型”,弹出如下界面
我们用的PHP,这里选择PHP
完成,ok,第二步搞定。看又多出一个√。
3、搞定测试服务器
点击蓝色“测试服务器”,弹出如下界面
显示我们第一步已经配置过的内容,直接点确认
完成,ok,但是并没有按照预想多出一个√,没事,继续。
4、创建MYSQL连接
点击上图红色箭头指的+,出来Mysql连接,点击,弹出如下界面
依次输入你本地的信息,如我这里输入的
然后点选取,弹出你的数据库,选择你的项目news所用的数据库。确定,确定,ok,完成。
❿ php怎么连接数据库
1、数据库连接第一步:配置mysql_connect()的参数
参数依次为:主机地址,用户名,用户密码
2、mysql_pconnect()与mysql_connect()是不一样的,pconnect顾名思义是持久连接
3、服务器连接成功后,需要你选择你需要用的数据库
4、使用mydql_close()可以关闭数据库连接资源,避免长时间占用启用资源消耗
5、mysqli_connect( )是mysql连接的另一种方式,参数形式一样
6、首次使用mysql连接数据库时,要记得使用输入逻辑判断,服务器连接不成功或者选择数据库不成功,都要用Mysql_error或者mysql_errno来报错
7、mysql的报错,能够帮助你准确地定位到错误发生在哪里。