导航:首页 > 编程语言 > php连接数据库的类

php连接数据库的类

发布时间:2023-04-07 19:43:59

1. php连接数据库关于PDO类和PDOStatement类的区别是什么

这代表两个不同的对象,看一下PDO::query()的定义:

public PDOStatement PDO::query ( string $statement )

可以知道query返回的结果是PDOStatement实例对象,那么你至少可以知道PDOStatement可以用来操作结果集了。

看一下PDOStatement类有哪些方法:

http://php.net/manual/zh/class.pdostatement.php

发现有fetch,fetchAll等熟悉的功能,不是么?

然后再来看看PDO::prepare()方法

public PDOStatement PDO::prepare ( string $statement [, array $driver_options = array() ] )

它也是返回的PDOStatement,按照手册的说法,PDOStatement代表一条预处理语句,并在该语句被执行后代表一个相关的结果集。

也就是说,如果你通过PDO::query()直接查询,那么返回的PDOStatement就表示一个结果集。

如果你通过PDO::prepare()查询,实际上并未执行sql,而是得到一个预处理语句(PDOStatement),然后你调用PDOStatement::execute()方法真正执行。

2. PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】

本文实例讲述了PHP利用pdo_odbc实现连接数据库。分享给大家供大家参考,具体如下:
目的:从sql
server数据库里面把某个视图文件调用出来,以键值对的方式显示在页面上。
利用pdo
odbc来实现PHP连接数据库:
在PHP配置文件里面开启pdo_odbc.dll服务。重启Apache服务器。
在ThinkPHP5.1的项目中在模块里添加config添加规定好的样式数据库:
代码如下:
<?php
return
[
//
数据库类型
'type'
=>
'sqlsrv',
//
服务器地址
'hostname'
=>
'localhost',
//
数据库名
'database'
=>
'mysql',
//
用户名
'username'
=>
'sa',
//
密码
'password'
=>
'123456',
//
端口
'hostport'
=>
'',
//
连接dsn
'dsn'
=>
'odbc:Driver={SQL
Server};Server=localhost;Database=mysql',
//
数据库连接参数
'params'
=>
[],
//
数据库编码默认采用utf8
'charset'
=>
'utf8',
//
数据库表前缀
'prefix'
=>
'',
//
数据库调试模式
'debug'
=>
true,
//
数据库部署方式:0
集中式(单一服务器),1
分布式(主从服务器)
'deploy'
=>
0,
//
数据库读写是否分离
主从式有效
'rw_separate'
=>
false,
//
读写分离后
主服务器数量
'master_num'
=>
1,
//
指定从服务器序号
'slave_no'
=>
'',
//
是否严格检查字段是否存在
'fields_strict'
=>
true,
//
数据集返回类型
'resultset_type'
=>
'array',
//
自动写入时间戳字段
'auto_timestamp'
=>
false,
//
时间字段取出后的默认时间格式
'datetime_format'
=>
'Y-m-d
H:i:s',
//
是否需要进行SQL性能分析
'sql_explain'
=>
false,
//
Builder类
'builder'
=>
'',
//
Query类
'query'
=>
'\\think\\db\\Query',
//
是否需要断线重连
'break_reconnect'
=>
false,
//
断线标识字符串
'break_match_str'
=>
[],
];
?>
在控制器controller里面建一个控制文件Test.php
代码如下:
<?php
namespace
app\index\controller;
use
think\Db;
use
think\Controller;
class
Test
extends
Controller
{
public
function
zz(){
$data=Db::view('View_2')->select();
echo
json_encode($data);
}
}
?>
最后调用入口文件即可访问。
http://localhost:81/1111/tp5/public/index/test/zz
我的效果:
[{"111":"123","1112":"LLP","232":"1","ROW_NUMBER":"1"},{"111":"123","1112":"BB","232":"2","ROW_NUMBER":"2"}]
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend
FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
您可能感兴趣的文章:ThinkPHP实现多数据库连接的解决方法tp5(thinkPHP5)框架实现多数据库查询的方法ThinkPHP3.1新特性之多数据库操作更加完善tp5(thinkPHP5)框架连接数据库的方法示例PHP7使用ODBC连接SQL
Server2008
R2数据库示例【基于thinkPHP5.1框架】thinkPHP5实现的查询数据库并返回json数据实例tp5(thinkPHP5)操作mongoDB数据库的方法tp5(thinkPHP5)框架数据库Db增删改查常见操作总结thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例

3. 怎么将php与数据库连接

php链接mysql必备条件:
已安装mysql数据库;

检查php环境是否已开启mysql扩展(一般情况下是开启的);
检查方法:a.使用phpinfo();函数,看有没有mysql项;b.打开php.ini文件,检查php_mysql.dll前分号是否已取掉。
php链接代码如下:
<?php
//设置编码格式
header("Content-type:text/html;charset=utf-8");

//定义数据库主机地址
$host="localhost";

//定义mysql数据库登录用户名
$user="root";

//定义mysql数据库登录密码
$pwd="";

//链接数据库
$conn = mysql_connect($host,$user,$pwd);

//对连接进行判断
if(!$conn){
die("数据库连接失败!".mysql_errno());
}else{

echo "数据库连接成功!";
}
?>

4. 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 );
}
}
}

5. php中有mysqli类,是吗$mysqli->info

本文所述的是一个在PHP中以mysqli方式连接数据库的一族清个数据库类实例,该数据库类是从一个PHP的CMS中整理出来的,可实现PHP连接数据库类,MySQLi版,兼容PHP4,对于有针对性需派态要的朋友兆羡前可根据此代码进行优化和修改。
?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419

<?php
#==================================================================================================
# Filename: /db/db_mysqli.php
# Note : 连接数据库类,MySQLi版
#==================================================================================================
#[类库sql]
class db_mysqli
{
var $query_count = 0;
var $host;
var $user;
var $pass;
var $data;
var $conn;
var $result;
var $prefix = "qingga

6. 谁知道PHP网站怎么连接到数据库的!

很简单,首先下个数据库操作的类(什乎行孙么带碧mysql.class.php什么的),然后新建个mysql对象, 返回$db;接着执行SQL语句查询示例代码
$db = new mysql($dbAddress,$dbuser,$dbpassword,$database);
$sql = "select * from 表名";
$db -> query("set names utf8");
$db -> query($sql);其中mysql是类,它有个构造函数 用它可以建立数据库连接对象,然后query是数据查询函数,主要执行SQL语句的岁链。网上下个PHP源码看看就知道了

7. 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;
}
}
}

8. 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;
}
}
}
?>

9. 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);

10. php连接数据库关于PDO类和PDOStatement类的区别是什么

PDO可以兼容更多数据库,同样的语法访问不同数据库;

配置简单,操作方便;

PDO对预处理语句的支持需要使用PDOStatement类对象,所以PDOStatement类只是PDO的一部分,这个类比较大作用是防止sql注入:

<?php
//...省略PDO连接数据库代码
$query="insertintocontactinfo(name,address,phone)values(:name,:address,:phone)";
$stmt=$dbh->prepare($query);//调用PDO对象中的prepare()方法
$stmt->blinparam(':name',$name);//将变量$name的引用绑定到准备好的查询名字参数":name"中
$stmt->blinparam(':address',$address);
$stmt->blinparam(':phone',phone);
//...
?>

它是每个字段值可以对应替换的,pdo可以对每个值进行处理,防止sql注入;

阅读全文

与php连接数据库的类相关的资料

热点内容
阅读app怎么使用 浏览:317
centos防火墙命令 浏览:432
命令行变更 浏览:332
linux设备和驱动 浏览:207
加密货币骗局破案 浏览:345
cc特征码加密 浏览:775
清空dns缓存命令 浏览:295
文件夹单击右键一直转圈 浏览:820
天天玩乐园是哪个app 浏览:395
单片机数码管动态显示效果图 浏览:874
备用dns服务器地址可以调吗 浏览:267
ad剑魔和app哪个好 浏览:865
java的undefined 浏览:813
列表的合并与排序python代码 浏览:324
编译原理英文版pdf下载 浏览:951
c单片机pdf 浏览:827
adb下载命令 浏览:126
安卓怎么打开pdf 浏览:108
php笔试题选择题及答案 浏览:397
王者安卓大乔新皮肤怎么买优惠 浏览:616