你傳入的sql不應該那樣傳,可用性太低,函數或方法應該傳入變量,或者說可變的值。上代碼,不懂的問

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