你傳入的sql不應(yīng)該那樣傳,可用性太低,函數(shù)或方法應(yīng)該傳入變量,或者說可變的值。上代碼,不懂的問
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的東烏珠穆沁網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
/*封裝函數(shù)*/
$arr?=?$_POST;
//$sql?=?"INSERT?INTO?ui234_user?(username,password,u_name,u_time)?VALUES?(?,?,?,?)";
$table_name?=?"ui234_user";
$field_arr?=?array('username','password','u_name','u_time');
insert($arr,$table_name,$field_arr);
function?insert($arr,$table_name,$field_arr){
$sql?=?'INSERT?INTO?'.$table_name.'?(';
$field_name?=?'';//名稱
$field_value?=?'';//值
$field_post?=?'';//post取值
/*拼裝字段*/
foreach?($field_arr?as?$key?=?$value)?{
if($key?==?count($field_arr)-1){
$field_name?.=?$value;
$field_value.=?'?';
$field_post?.=?'$arr["'.$field_name.'"]';
}else{
$field_name?.=?$value.',';
$field_value.=?'?,';
$field_post?.=?'$arr["'.$value.'"],';
}
}
$sql?.=?$field_name.')?VALUES?('.$field_value.');';
$mysqli=connect();
$stmt?=?$mysqli-prepare("{$sql}");
$exe_str?=?'$stmt-bind_param("ssss",'.$field_post.');';
//輸出字符串結(jié)果
echo?$sql.'hr/';
echo?$exe_str;
//然后用eval執(zhí)行字符串代碼
eval($exe_str);//相當(dāng)于是:$stmt-bind_param('ssss',$arr['username'],$arr['password'],$arr['u_name'],$arr['u_time']);
stmt-execute();
}
復(fù)制代碼
代碼如下:
?php
/*
MYSQL
數(shù)據(jù)庫訪問封裝類
MYSQL
數(shù)據(jù)訪問方式,php4支持以mysql_開頭的過程訪問方式,php5開始支持以mysqli_開頭的過程和mysqli面向?qū)ο?/p>
訪問方式,本封裝類以mysql_封裝
數(shù)據(jù)訪問的一般流程:
1,連接數(shù)據(jù)庫
mysql_connect
or
mysql_pconnect
2,選擇數(shù)據(jù)庫
mysql_select_db
3,執(zhí)行SQL查詢
mysql_query
4,處理返回的數(shù)據(jù)
mysql_fetch_array
mysql_num_rows
mysql_fetch_assoc
mysql_fetch_row
etc
*/
class
db_mysql
{
var
$querynum
=
;
//當(dāng)前頁面進(jìn)程查詢數(shù)據(jù)庫的次數(shù)
var
$dblink
;
//數(shù)據(jù)庫連接資源
//鏈接數(shù)據(jù)庫
function
connect($dbhost,$dbuser,$dbpw,$dbname='',$dbcharset='utf-8',$pconnect=0
,
$halt=true)
{
$func
=
empty($pconnect)
?
'mysql_connect'
:
'mysql_pconnect'
;
$this-dblink
=
@$func($dbhost,$dbuser,$dbpw)
;
if
($halt
!$this-dblink)
{
$this-halt("無法鏈接數(shù)據(jù)庫!");
}
//設(shè)置查詢字符集
mysql_query("SET
character_set_connection={$dbcharset},character_set_results={$dbcharset},character_set_client=binary",$this-dblink)
;
//選擇數(shù)據(jù)庫
$dbname
@mysql_select_db($dbname,$this-dblink)
;
}
//選擇數(shù)據(jù)庫
function
select_db($dbname)
{
return
mysql_select_db($dbname,$this-dblink);
}
//執(zhí)行SQL查詢
function
query($sql)
{
$this-querynum++
;
return
mysql_query($sql,$this-dblink)
;
}
//返回最近一次與連接句柄關(guān)聯(lián)的INSERT,UPDATE
或DELETE
查詢所影響的記錄行數(shù)
function
affected_rows()
{
return
mysql_affected_rows($this-dblink)
;
}
//取得結(jié)果集中行的數(shù)目,只對select查詢的結(jié)果集有效
function
num_rows($result)
{
return
mysql_num_rows($result)
;
}
//獲得單格的查詢結(jié)果
function
result($result,$row=0)
{
return
mysql_result($result,$row)
;
}
//取得上一步
INSERT
操作產(chǎn)生的
ID,只對表有AUTO_INCREMENT
ID的操作有效
function
insert_id()
{
return
($id
=
mysql_insert_id($this-dblink))
=
?
$id
:
$this-result($this-query("SELECT
last_insert_id()"),
0);
}
//從結(jié)果集提取當(dāng)前行,以數(shù)字為key表示的關(guān)聯(lián)數(shù)組形式返回
function
fetch_row($result)
{
return
mysql_fetch_row($result)
;
}
//從結(jié)果集提取當(dāng)前行,以字段名為key表示的關(guān)聯(lián)數(shù)組形式返回
function
fetch_assoc($result)
{
return
mysql_fetch_assoc($result);
}
//從結(jié)果集提取當(dāng)前行,以字段名和數(shù)字為key表示的關(guān)聯(lián)數(shù)組形式返回
function
fetch_array($result)
{
return
mysql_fetch_array($result);
}
//關(guān)閉鏈接
function
close()
{
return
mysql_close($this-dblink)
;
}
//輸出簡單的錯(cuò)誤html提示信息并終止程序
function
halt($msg)
{
$message
=
"html\nhead\n"
;
$message
.=
"meta
content='text/html;charset=gb2312'\n"
;
$message
.=
"/head\n"
;
$message
.=
"body\n"
;
$message
.=
"數(shù)據(jù)庫出錯(cuò):".htmlspecialchars($msg)."\n"
;
$message
.=
"/body\n"
;
$message
.=
"/html"
;
echo
$message
;
exit
;
}
}
?
類文件mysql.class.php:
?php
class?Mysql{
//數(shù)據(jù)庫連接返回值
private?$conn;
/**
*?[構(gòu)造函數(shù),返回值給$conn]
*?@param?[string]?$hostname?[主機(jī)名]
*?@param?[string]?$username[用戶名]
*?@param?[string]?$password[密碼]
*?@param?[string]?$dbname[數(shù)據(jù)庫名]
*?@param?[string]?$charset[字符集]
*?@return?[null]
*/
function?__construct($hostname,$username,$password,$dbname,$charset='utf8'){
$config?=?@mysql_connect($hostname,$username,$password);
if(!$config){
echo?'連接失敗,請聯(lián)系管理員';
exit;
}
$this-conn?=?$config;
$res?=?mysql_select_db($dbname);
if(!$res){
echo?'連接失敗,請聯(lián)系管理員';
exit;
}
mysql_set_charset($charset);
}
function?__destruct(){
mysql_close();
}
/**
*?[getAll?獲取所有信息]
*?@param?[string]?$sql?[sql語句]
*?@return?[array]?[返回二維數(shù)組]
*/
function?getAll($sql){
$result?=?mysql_query($sql,$this-conn);
$data?=?array();
if($result??mysql_num_rows($result)0){
while($row?=?mysql_fetch_assoc($result)){
$data[]?=?$row;
}
}
return?$data;
}
/**
*?[getOne?獲取單條數(shù)據(jù)]
*?@param?[string]?$sql?[sql語句]
*?@return?[array]?[返回一維數(shù)組]
*/
function?getOne($sql){
$result?=?mysql_query($sql,$this-conn);
$data?=?array();
if($result??mysql_num_rows($result)0){
$data?=?mysql_fetch_assoc($result);
}
return?$data;
}
/**
*?[getOne?獲取單條數(shù)據(jù)]
*?@param?[string]?$table?[表名]
*?@param?[string]?$data?[由字段名當(dāng)鍵,屬性當(dāng)鍵值的一維數(shù)組]
*?@return?[type]?[返回false或者插入數(shù)據(jù)的id]
*/
function?insert($table,$data){
$str?=?'';
$str?.="INSERT?INTO?`$table`?";
$str?.="(`".implode("`,`",array_keys($data))."`)?";
$str?.="?VALUES?";
$str?.=?"('".implode("','",$data)."')";
$res?=?mysql_query($str,$this-conn);
if($res??mysql_affected_rows()0){
return?mysql_insert_id();
}else{
return?false;
}
}
/**
*?[update?更新數(shù)據(jù)庫]
*?@param?[string]?$table?[表名]
*?@param?[array]?$data?[更新的數(shù)據(jù),由字段名當(dāng)鍵,屬性當(dāng)鍵值的一維數(shù)組]
*?@param?[string]?$where?[條件,‘字段名’=‘字段屬性’]
*?@return?[type]?[更新成功返回影響的行數(shù),更新失敗返回false]
*/
function?update($table,$data,$where){
$sql?=?'UPDATE?'.$table.'?SET?';
foreach($data?as?$key?=?$value){
$sql?.=?"`{$key}`='{$value}',";
}
$sql?=?rtrim($sql,',');
$sql?.=?"?WHERE?$where";
$res?=?mysql_query($sql,$this-conn);
if($res??mysql_affected_rows()){
return?mysql_affected_rows();
}else{
return?false;
}
}
/**
*?[delete?刪除數(shù)據(jù)]
*?@param?[string]?$table?[表名]
*?@param?[string]?$where?[條件,‘字段名’=‘字段屬性’]
*?@return?[type]?[成功返回影響的行數(shù),失敗返回false]
*/
function?del($table,$where){
$sql?=?"DELETE?FROM?`{$table}`?WHERE?{$where}";
$res?=?mysql_query($sql,$this-conn);
if($res??mysql_affected_rows()){
return?mysql_affected_rows();
}else{
return?false;
}
}
}
?
使用案例:
?php
//包含數(shù)據(jù)庫操作類文件
include?'mysql.class.php';
//設(shè)置傳入?yún)?shù)
$hostname='localhost';
$username='root';
$password='123456';
$dbname='aisi';
$charset?=?'utf8';
//實(shí)例化對象
$db?=?new?Mysql($hostname,$username,$password,$dbname);
//獲取一條數(shù)據(jù)
$sql?=?"SELECT?count(as_article_id)?as?count?FROM?as_article?where?as_article_type_id=1";
$count?=?$db-getOne($sql);
//獲取多條數(shù)據(jù)
$sql?=?"SELECT?*?FROM?as_article?where?as_article_type_id=1?order?by?as_article_addtime?desc?limit?$start,$limit";
$service?=?$db-getAll($sql);
//插入數(shù)據(jù)
$arr?=?array(
'as_article_title'='數(shù)據(jù)庫操作類',
'as_article_author'='rex',
);
$res?=?$db-insert('as_article',$arr);
//更新數(shù)據(jù)
$arr?=?array(
'as_article_title'='實(shí)例化對象',
'as_article_author'='Lee',
);
$where?=?"as_article_id=1";
$res?=?$db-update('as_article',$arr,$where);
//刪除數(shù)據(jù)
$where?=?"as_article_id=1";
$res?=?$db-del('as_article',$where);
?
?php
class?RandCount
{
static?public?function?countInt($number)
{
if?($number??0??$number?=?100)?{
$count?=?0;
for($i=0;$i100;$i++){
if(rand(1,100)==$number){
$count++;
}
}
return?$count;
}?else?{
return?'輸入數(shù)據(jù)不合法';
}
}
}
$msg=new?RandCount();
echo?$msg::countInt(50);
網(wǎng)站題目:php數(shù)據(jù)庫函數(shù)封裝 php封裝接口
本文地址:http://m.kartarina.com/article6/dodedog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、做網(wǎng)站、App開發(fā)、響應(yīng)式網(wǎng)站、靜態(tài)網(wǎng)站、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)