检验安装安装是否成功的方法:import pymysql . 如果不报错 说明安装成功.
(1)导入pymysql: import pymysql
务必注意各等号前面的内容!charset参数可避免中文乱码
for each in cur:
$link=mysql_connect($this-host,$this-name,$this-pass,$this-datebase)
这里不要填database
$this-query("insert into $table ($name) value ($value)");
value改成values
php
class?MMysql?{
protected?static?$_dbh?=?null;?//静态属性,所有数据库实例共用,避免重复连接数据库
protected?$_dbType?=?'mysql';
protected?$_pconnect?=?true;?//是否使用长连接
protected?$_host?=?'localhost';
protected?$_user?=?'root';
protected?$_pass?=?'root';
protected?$_dbName?=?null;?//数据库名
protected?$_sql?=?false;?//最后一条sql语句
protected?$_where?=?'';
protected?$_order?=?'';
protected?$_limit?=?'';
protected?$_field?=?'*';
protected?$_clear?=?0;?//状态,0表示查询条件干净,1表示查询条件污染
protected?$_trans?=?0;?//事务指令数?
/**
*?初始化类
*?@param?array?$conf?数据库配置
*/
public?function?__construct(array?$conf)?{
class_exists('PDO')?or?die("PDO:?class?not?exists.");
$this-_host?=?$conf['host'];
$this-_port?=?$conf['port'];
$this-_user?=?$conf['user'];
$this-_pass?=?$conf['passwd'];
$this-_dbName?=?$conf['dbname'];
//连接数据库
if?(?is_null(self::$_dbh)?)?{
$this-_connect();
}
*?连接数据库的方法
protected?function?_connect()?{
$dsn?=?$this-_dbType.':host='.$this-_host.';port='.$this-_port.';dbname='.$this-_dbName;
$options?=?$this-_pconnect?array(PDO::ATTR_PERSISTENT=true)?:?array();
try?{?
$dbh?=?new?PDO($dsn,?$this-_user,?$this-_pass,?$options);
$dbh-setAttribute(PDO::ATTR_ERRMODE,?PDO::ERRMODE_EXCEPTION);?//设置如果sql语句执行错误则抛出异常,事务会自动回滚
$dbh-setAttribute(PDO::ATTR_EMULATE_PREPARES,?false);?//禁用prepared?statements的仿真效果(防SQL注入)
}?catch?(PDOException?$e)?{?
die('Connection?failed:?'?.?$e-getMessage());
self::$_dbh?=?$dbh;
/**?
*?字段和表名添加?+符号
*?保证指令中使用关键字不出错?针对mysql?
*?@param?string?$value?
*?@return?string?
*/?
protected?function?_addChar($value)?{?
if?('*'==$value?||?false!==strpos($value,'(')?||?false!==strpos($value,'.')?||?false!==strpos($value,'+'))?{?
//如果包含*?或者?使用了sql方法?则不作处理?
}?elseif?(false?===?strpos($value,'+')?)?{?
$value?=?'+'.trim($value).'+';
}?
return?$value;?
*?取得数据表的字段信息?
*?@param?string?$tbName?表名
*?@return?array?
protected?function?_tbFields($tbName)?{
$sql?=?'SELECT?COLUMN_NAME?FROM?INFORMATION_SCHEMA.COLUMNS?WHERE?TABLE_NAME="'.$tbName.'"?AND?TABLE_SCHEMA="'.$this-_dbName.'"';
$stmt?=?self::$_dbh-prepare($sql);
$stmt-execute();
$result?=?$stmt-fetchAll(PDO::FETCH_ASSOC);
$ret?=?array();
foreach?($result?as?$key=$value)?{
$ret[$value['COLUMN_NAME']]?=?1;
return?$ret;
*?过滤并格式化数据表字段
*?@param?string?$tbName?数据表名?
*?@param?array?$data?POST提交数据?
*?@return?array?$newdata?
protected?function?_dataFormat($tbName,$data)?{
if?(!is_array($data))?return?array();
$table_column?=?$this-_tbFields($tbName);
$ret=array();
foreach?($data?as?$key=$val)?{
if?(!is_scalar($val))?continue;?//值不是标量则跳过
if?(array_key_exists($key,$table_column))?{
$key?=?$this-_addChar($key);
if?(is_int($val))?{?
$val?=?intval($val);?
}?elseif?(is_float($val))?{?
$val?=?floatval($val);?
}?elseif?(preg_match('/^\(\w*(\+|\-|\*|\/)?\w*\)$/i',?$val))?{
//?支持在字段的值里面直接使用其它字段?,例如?(score+1)?(name)?必须包含括号
$val?=?$val;
}?elseif?(is_string($val))?{?
$val?=?'"'.addslashes($val).'"';
$ret[$key]?=?$val;
*?执行查询?主要针对?SELECT,?SHOW?等指令
*?@param?string?$sql?sql指令?
*?@return?mixed?
protected?function?_doQuery($sql='')?{
$this-_sql?=?$sql;
$pdostmt?=?self::$_dbh-prepare($this-_sql);?//prepare或者query?返回一个PDOStatement
$pdostmt-execute();
$result?=?$pdostmt-fetchAll(PDO::FETCH_ASSOC);
return?$result;
*?执行语句?针对?INSERT,?UPDATE?以及DELETE,exec结果返回受影响的行数
*?@return?integer?
protected?function?_doExec($sql='')?{
return?self::$_dbh-exec($this-_sql);
*?执行sql语句,自动判断进行查询或者执行操作?
*?@param?string?$sql?SQL指令?
public?function?doSql($sql='')?{
$queryIps?=?'INSERT|UPDATE|DELETE|REPLACE|CREATE|DROP|LOAD?DATA|SELECT?.*?INTO|COPY|ALTER|GRANT|REVOKE|LOCK|UNLOCK';?
if?(preg_match('/^\s*"?('?.?$queryIps?.?')\s+/i',?$sql))?{?
return?$this-_doExec($sql);
else?{
//查询操作
return?$this-_doQuery($sql);
*?获取最近一次查询的sql语句?
*?@return?String?执行的SQL?
public?function?getLastSql()?{?
return?$this-_sql;
*?插入方法
*?@param?string?$tbName?操作的数据表名
*?@param?array?$data?字段-值的一维数组
*?@return?int?受影响的行数
public?function?insert($tbName,array?$data){
$data?=?$this-_dataFormat($tbName,$data);
if?(!$data)?return;
$sql?=?"insert?into?".$tbName."(".implode(',',array_keys($data)).")?values(".implode(',',array_values($data)).")";
*?删除方法
public?function?delete($tbName)?{
//安全考虑,阻止全表删除
if?(!trim($this-_where))?return?false;
$sql?=?"delete?from?".$tbName."?".$this-_where;
$this-_clear?=?1;
$this-_clear();
*?更新函数
*?@param?array?$data?参数数组
public?function?update($tbName,array?$data)?{
//安全考虑,阻止全表更新
$valArr?=?'';
foreach($data?as?$k=$v){
$valArr[]?=?$k.'='.$v;
$valStr?=?implode(',',?$valArr);
$sql?=?"update?".trim($tbName)."?set?".trim($valStr)."?".trim($this-_where);
*?查询函数
*?@return?array?结果集
public?function?select($tbName='')?{
$sql?=?"select?".trim($this-_field)."?from?".$tbName."?".trim($this-_where)."?".trim($this-_order)."?".trim($this-_limit);
return?$this-_doQuery(trim($sql));
*?@param?mixed?$option?组合条件的二维数组,例:$option['field1']?=?array(1,'=','or')
*?@return?$this
public?function?where($option)?{
if?($this-_clear0)?$this-_clear();
$this-_where?=?'?where?';
$logic?=?'and';
if?(is_string($option))?{
$this-_where?.=?$option;
elseif?(is_array($option))?{
foreach($option?as?$k=$v)?{
if?(is_array($v))?{
$relative?=?isset($v[1])?$v[1]?:?'=';
$condition?=?'?('.$this-_addChar($k).'?'.$relative.'?'.$v[0].')?';
$condition?=?'?('.$this-_addChar($k).'='.$v.')?';
$this-_where?.=?isset($mark)?$logic.$condition?:?$condition;
$mark?=?1;
return?$this;
*?设置排序
*?@param?mixed?$option?排序条件数组?例:array('sort'='desc')
public?function?order($option)?{
$this-_order?=?'?order?by?';
$this-_order?.=?$option;
foreach($option?as?$k=$v){
$order?=?$this-_addChar($k).'?'.$v;
$this-_order?.=?isset($mark)?','.$order?:?$order;
*?设置查询行数及页数
*?@param?int?$page?pageSize不为空时为页数,否则为行数
*?@param?int?$pageSize?为空则函数设定取出行数,不为空则设定取出行数及页数
public?function?limit($page,$pageSize=null)?{
if?($pageSize===null)?{
$this-_limit?=?"limit?".$page;
$pageval?=?intval(?($page?-?1)?*?$pageSize);
$this-_limit?=?"limit?".$pageval.",".$pageSize;
*?设置查询字段
*?@param?mixed?$field?字段数组
public?function?field($field){
if?(is_string($field))?{
$field?=?explode(',',?$field);
$nField?=?array_map(array($this,'_addChar'),?$field);
$this-_field?=?implode(',',?$nField);
*?清理标记函数
protected?function?_clear()?{
$this-_where?=?'';
$this-_order?=?'';
$this-_limit?=?'';
$this-_field?=?'*';
$this-_clear?=?0;
*?手动清理标记
public?function?clearKey()?{
*?启动事务?
*?@return?void?
public?function?startTrans()?{?
//数据rollback?支持?
if?($this-_trans==0)?self::$_dbh-beginTransaction();
$this-_trans++;?
return;?
*?用于非自动提交状态下面的查询提交?
*?@return?boolen?
public?function?commit()?{
$result?=?true;
if?($this-_trans0)?{?
$result?=?self::$_dbh-commit();?
$this-_trans?=?0;
*?事务回滚?
public?function?rollback()?{
if?($this-_trans0)?{
$result?=?self::$_dbh-rollback();
*?关闭连接
*?PHP?在脚本结束时会自动关闭连接.
public?function?close()?{
if?(!is_null(self::$_dbh))?self::$_dbh?=?null;
php封装mysql类
复制代码
代码如下:
class
Mysql
{
private
$host;
$user;
$pwd;
$dbName;
$charset;
$conn
=
null;
public
function
__construct()
$this-host
'localhost';
$this-user
'root';
$this-pwd
$this-dbName
'test';
$this-connect($this-host,$this-user,$this-pwd);
$this-switchDb($this-dbName);
$this-setChar($this-charset);
//负责链接
connect($h,$u,$p)
mysql_connect($h,$u,$p);
$this-conn
$conn;
//负责切换数据库
switchDb($db)
$sql
'use'
.
$db;
$this-query($sql);
//负责设置字符集
setChar($char)
'set
names'
$char;
//负责发送sql查询
query($sql)
return
mysql_query($sql,$this-conn);
//负责获取多行多列的select结果
getAll($sql)
$list
array();
$rs
if
(!$rs)
false;
while
($row
mysql_fetch_assoc($rs))
$list[]
$row;
$list;
getRow($sql)
if(!$rs)
mysql_fetch_assoc($rs);
getOne($sql)
$row[0];
close()
mysql_close($this-conn);
echo
'pre';
$mysql
new
Mysql();
print_r($mysql);
"insert
into
stu
values
if($mysql-query($sql)){
"query成功";
}else
"失败";
"br
/";
"select
*
from
stu";
$arr
$mysql-getAll($sql);
print_r($arr);
/*
MYSQL
数据库访问封装类
访问方式,本封装类以mysql_封装
数据访问的一般流程:
①.,连接数据库
mysql_connect
or
mysql_pconnect
mysql_select_db
mysql_query
mysql_fetch_array
mysql_num_rows
mysql_fetch_assoc
mysql_fetch_row
etc
db_mysql
var
$querynum
;
//当前页面进程查询数据库的次数
$dblink
//数据库连接资源
//链接数据库
,
$halt=true)
$func
empty($pconnect)
'mysql_connect'
:
'mysql_pconnect'
$this-dblink
@$func($dbhost,$dbuser,$dbpw)
($halt
!$this-dblink)
$this-halt("无法链接数据库!");
//设置查询字符集
mysql_query("SET
character_set_connection={$dbcharset},character_set_results={$dbcharset},character_set_client=binary",$this-dblink)
//选择数据库
$dbname
@mysql_select_db($dbname,$this-dblink)
select_db($dbname)
mysql_select_db($dbname,$this-dblink);
//执行SQL查询
$this-querynum++
mysql_query($sql,$this-dblink)
//返回最近一次与连接句柄关联的INSERT,UPDATE
或DELETE
查询所影响的记录行数
affected_rows()
mysql_affected_rows($this-dblink)
//取得结果集中行的数目,只对select查询的结果集有效
num_rows($result)
mysql_num_rows($result)
//获得单格的查询结果
result($result,$row=0)
mysql_result($result,$row)
//取得上一步
INSERT
操作产生的
ID,只对表有AUTO_INCREMENT
ID的操作有效
insert_id()
($id
mysql_insert_id($this-dblink))
$id
$this-result($this-query("SELECT
last_insert_id()"),
0);
//从结果集提取当前行,以数字为key表示的关联数组形式返回
fetch_row($result)
mysql_fetch_row($result)
//从结果集提取当前行,以字段名为key表示的关联数组形式返回
fetch_assoc($result)
mysql_fetch_assoc($result);
//从结果集提取当前行,以字段名和数字为key表示的关联数组形式返回
fetch_array($result)
mysql_fetch_array($result);
//关闭链接
mysql_close($this-dblink)
//输出简单的错误html提示信息并终止程序
halt($msg)
$message
"html\nhead\n"
.=
"meta
"/head\n"
"body\n"
"数据库出错:".htmlspecialchars($msg)."\n"
"/body\n"
"/html"
exit
以上就是土嘎嘎小编为大家整理的php连接mysql的封装类相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!