ezSQL是一個(gè)非常好用的PHP數(shù)據(jù)庫(kù)操作類 著名的開(kāi)源博客WordPress的數(shù)據(jù)庫(kù)操作就使用了ezSQL的MySQL部分 該數(shù)據(jù)庫(kù)操作類支持幾乎所有主流的數(shù)據(jù)庫(kù) 如 PHP PDO mySQL Oracle InterBase/FireBird PostgreSQL SQLite以及MS SQL等 ezSQL具有很強(qiáng)的調(diào)試功能 可以快速地查看SQL代碼的執(zhí)行情況 使用ezSQL 可以為我們節(jié)省開(kāi)發(fā)時(shí)間 簡(jiǎn)化代碼并提高運(yùn)行效率
目前成都創(chuàng)新互聯(lián)公司已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、興隆網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
ezSQL的優(yōu)點(diǎn)就不用多說(shuō)了 它小巧 快速 簡(jiǎn)單 易用 并且開(kāi)源 還有就是安全 你沒(méi)想到的細(xì)節(jié)它都為你考慮了 你只需要在你的腳本開(kāi)頭包含相關(guān)的PHP文件 然后你就可以使用更好用的一套ezSQL函數(shù)來(lái)代替標(biāo)準(zhǔn)的PHP數(shù)據(jù)庫(kù)操作函數(shù)
下面是ezSQL中一些主要的函數(shù)
$db get_results 從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)集
$db get_row 從數(shù)據(jù)庫(kù)中讀取一行數(shù)據(jù)
$db get_col 從數(shù)據(jù)庫(kù)中讀取一列指定的數(shù)據(jù)集
$db get_var 從數(shù)據(jù)庫(kù)的數(shù)據(jù)集中讀取一個(gè)值
$db query 執(zhí)行一條SQL語(yǔ)句
$db debug 打印最后執(zhí)行的SQL語(yǔ)句及其返回的結(jié)果
$db vardump 打印變量的結(jié)構(gòu)及其內(nèi)容
$db select 選擇一個(gè)新數(shù)據(jù)庫(kù)
$db get_col_info 獲取列的信息
$db hide_errors 隱藏錯(cuò)誤
$db show_errors 顯示錯(cuò)誤
ezSQL的使用方法很簡(jiǎn)單 首先下載ezSQL源代碼 然后將ez_sql_core php文件和ez_sql_mysql php文件(這里以mySQL為例)放到與你的腳本文件相同的目錄下 然后將下面的代碼添加到你的腳本文件的最前面 這樣就可以正常使用ezSQL了
?php// 包含ezSQL的核心文件include_once?"ez_sql_core php";// 包含ezSQL具體的數(shù)據(jù)庫(kù)文件 這里以mySQL為例include_once?"ez_sql_mysql php";// 初始化數(shù)據(jù)庫(kù)對(duì)象并建立數(shù)據(jù)庫(kù)連接$db?=?new?ezSQL_mysql( db_user db_password db_name db_host );?
下面是ezSQL中一些主要函數(shù)的應(yīng)用實(shí)例 這些代碼均來(lái)自于ezSQL的官方幫助文檔
實(shí)例一
// Select multiple records from the database and print them out $users?=?$db get_results("SELECT name email FROM users");foreach?(?$users?as?$user?)?{? ? ? ? ? ??// Access data using object syntax? ? ? ? ? ??echo?$user name;? ? ? ? ? ??echo?$user email;}
實(shí)例二
// Get one row from the database and print it out $user?=?$db get_row("SELECT name email FROM users WHERE id = ");echo?$user name;echo?$user email;
實(shí)例三
// Get one variable from the database and print it out $var?=?$db get_var("SELECT count(*) FROM users");echo?$var;
實(shí)例四
// Insert into the database$db query("INSERT INTO users (id name email) VALUES (NULL justin jv@foo )");
實(shí)例五
// Update the database$db query("UPDATE users SET name = Justin WHERE id = )");
實(shí)例六
// Display last query and all associated results$db debug();
實(shí)例七
// Display the structure and contents of any result(s) or any variable$results?=?$db get_results("SELECT name email FROM users");$db vardump($results);
實(shí)例八
// Get one column (based on column index) and print it out $names?=?$db get_col("SELECT name email FROM users" )foreach?(?$names?as?$name?)?{? ??echo?$name;}
實(shí)例九
// Same as above ‘but quicker’foreach?(?$db get_col("SELECT name email FROM users" )?as?$name?)?{? ??echo?$name;}
實(shí)例十
lishixinzhi/Article/program/PHP/201311/21297
請(qǐng)檢查一下$WB對(duì)應(yīng)的表是否已經(jīng)定義?提示的是(indexx附近有語(yǔ)法錯(cuò)誤。是你的SQL語(yǔ)句有問(wèn)題,
建議將執(zhí)行的SQL單獨(dú)賦值。
$sql="insert into $WB (indexx,id,mid,uid,parent,t,reposts_count,attitudes_count,comments_count,text,original_text,user_created_at,followers_count,
bi_followers_count,favourites_count,statuses_count,friends_count,username,screen_name,user_description,gender,province,city,verified,verified_reason,verified_type,
user_location,user_avatar,user_geo_enabled,picture,geo) values $data_values");";
echo $sql."br/";//測(cè)試輸出,然后檢查該SQL語(yǔ)句的語(yǔ)法是否正確。
$query=mysqli_query($sql);
PDO可以兼容更多數(shù)據(jù)庫(kù),同樣的語(yǔ)法訪問(wèn)不同數(shù)據(jù)庫(kù);
配置簡(jiǎn)單,操作方便;
PDO對(duì)預(yù)處理語(yǔ)句的支持需要使用PDOStatement類對(duì)象,所以PDOStatement類只是PDO的一部分,這個(gè)類比較大作用是防止sql注入:
?php
//...省略PDO連接數(shù)據(jù)庫(kù)代碼
$query?=?"insert?into?contactinfo?(name,address,phone)?values(:name,:address,:phone)";
$stmt?=?$dbh-prepare($query);??????????//調(diào)用PDO對(duì)象中的prepare()方法
$stmt-blinparam(':name',$name);????????//將變量$name的引用綁定到準(zhǔn)備好的查詢名字參數(shù)":name"中
$stmt-blinparam(':address',$address);
$stmt-blinparam(':phone',phone);
//...
?
它是每個(gè)字段值可以對(duì)應(yīng)替換的,pdo可以對(duì)每個(gè)值進(jìn)行處理,防止sql注入;
我也剛剛學(xué)PHP,正在研究中,雖然你只給10分........
首先,將代碼保存到一個(gè)文件,如:mysql.class.php
其次,在一個(gè)常用的文件里調(diào)用:比如頭部文件header.php,因?yàn)槲曳旁诟夸浰杂孟旅娣绞綄?dǎo)入其他文件:
require dirname(__FILE__) . 'include/config.php';
//導(dǎo)入類文件
require dirname(__FILE__) . 'include/mysql.class.php';
//定義一個(gè)類及初始化數(shù)據(jù)庫(kù)類
$db = new mysql($db_host, $db_user, $db_pass, $db_name);
$db_host = $db_user = $db_pass = $db_name = NULL;
然后,在test.php文件調(diào)用:
require_once dirname(__FILE__) . '/header.php';
使用方法:
$sql = "讀取表";
$res = $db-query($sql);
$info = array();//定義數(shù)組
while($row=$db-fetchRow($res))
{
$arr['id'] = $row['id'];
$arr['title'] = $row['title'];
$info[] = $arr;
}
可以在顯示的地方用:
foreach($info as $i)
{
echo $i['title']."br /";
}
或是直接使用while
還用另一種調(diào)用方式:
$here_area = $db-getRow("select areaid,areaname from {$table}area where areaid='$areaid'");
$here[] = array('name'=$here_area['areaname'],'id'=$here_area['areaid']);
測(cè)試通過(guò),因?yàn)槲艺谑褂?....................................
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;
//自動(dòng)執(zhí)行__construct php5類構(gòu)建方法,如果PHP4和PHP5同時(shí)使用會(huì)自動(dòng)使用PHP5的方法
function __construct($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
//自動(dòng)執(zhí)行時(shí)調(diào)用mysql函數(shù)
$this-mysql($dbhost, $dbuser, $dbpw, $dbname, $pconnect, $quiet);
}
//php4類構(gòu)建方法,如果沒(méi)有 __construct 就自動(dòng)執(zhí)行此功能
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 "bMySQL 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;
}
}
}
?
貼出自己寫的一個(gè)數(shù)據(jù)庫(kù)類吧。
class.php
?php
class Db_Base
{
var $db_host;
var $db_name;
var $db_user;
var $password;
var $linkID;
var $sql;
var $result;
//構(gòu)造函數(shù),其中dbname,dbuser,dbpsd填自己的數(shù)據(jù)名,用戶名,密碼
function __construct()
{
$this-linkID = 0;
$this-sql = "";
$this-db_name="dbname";
$this-db_user="dbuser";
$this-password="dbpsd";
$this-db_host="localhost";
//調(diào)用數(shù)據(jù)庫(kù)鏈接函數(shù)
$this-Db_Connect();
}
function Db_Base()
{
$this-__construct();
}
//鏈接數(shù)據(jù)庫(kù)函數(shù)
function Db_Connect()
{
$this-linkID=@mysql_connect($this-db_host,$this-db_user,$this-password);
if(!$this-linkID)
{
DisplayError("連接失敗");exit();
}
$this-Db_Select();
return true;
}
//選擇數(shù)據(jù)庫(kù)函數(shù)
function Db_Select()
{
$select=mysql_select_db($this-db_name);
if(!$select)
{
DisplayError("選擇數(shù)據(jù)庫(kù)失敗");exit();
}
}
//sql語(yǔ)句操作
function Db_Query($sql)
{
if($sql) $this-sql=$sql;
if(!($this-result=mysql_query($this-sql,$this-linkID)))
{
DisplayError("SQL無(wú)效");
return 0;
}
else
{
return $this-result;
}
}
//sql語(yǔ)句的結(jié)果用數(shù)組返回
function Db_Fetch_Array()
{
return mysql_fetch_array($this-result);
}
//select語(yǔ)句 影響的行數(shù)
function Db_Num_Rows()
{
return mysql_num_rows($this-result);
}
//INSERT、UPDATE 、DELETE 的影響行數(shù)
function Db_Affected_Rows()
{
return mysql_affected_rows();
}
//清除記錄
function Db_Free_Result()
{
if(!is_array($this-result)) return "";
foreach($this-result as $kk = $vv)
{
if($vv) @mysql_free_result($vv);
}
}
?
其中DisplayError 為外部定義函數(shù)
應(yīng)用的話,如下操作
example.php
?php
require_once(class.php);
$news=new Db_Base();//構(gòu)建對(duì)象
$sql="select * from tableA limit 0,100";//初始化sql語(yǔ)句
$news-Db_Query($sql);//向數(shù)據(jù)庫(kù)插入sql語(yǔ)句
while($re=$news-Db_Fetch_Array())//循環(huán)輸出sql結(jié)果集
{
echo $re[keyA];
echo $re[keyB];//keyA,keyB為你數(shù)據(jù)表的鍵
}
echo $news-Db_Num_Rows();//輸出本次sql語(yǔ)句影響的行數(shù),假若sql語(yǔ)句是update,delete,insert的,則用 Db_Affected_Rows() 函數(shù)
$news-Db_Free_Result();//清空查詢結(jié)果
?
好吧,百度的這個(gè)表單輸入框真爛,不能調(diào)格式,代碼格式可能很亂,就麻煩樓主慢慢看吧。若有問(wèn)題再發(fā)消息給我百度號(hào)。
直接調(diào)用就行了,不過(guò)可能你需要引用文件,以下是例子
//文件conn.php,用于連接數(shù)據(jù)庫(kù)
class DB_Conn {
}
//文件 db.php, 用于數(shù)據(jù)庫(kù)操作,這個(gè)類必然需要使用數(shù)據(jù)庫(kù)連接對(duì)象,因此引用conn.php
require_once conn.php;
class DB {
}
//文件user.php
require_once 'db.php';
class User {
public function getUserById($id) {
$conn = new Db_Conn();
$db = new Db();
}
}
以上只是示意,如果文件不在一個(gè)目錄下記得修改路徑。而且,一般來(lái)說(shuō)數(shù)據(jù)庫(kù)對(duì)象應(yīng)該包含連接數(shù)據(jù)庫(kù)和數(shù)據(jù)操作的全部功能,不需要分別寫在兩個(gè)類里面。我覺(jué)得你對(duì)面向?qū)ο蟮睦斫膺€很淺薄,需要進(jìn)一步累積經(jīng)驗(yàn)。
文章題目:php數(shù)據(jù)庫(kù)處理類 PHP調(diào)用數(shù)據(jù)庫(kù)
本文網(wǎng)址:http://m.rwnh.cn/article24/doopeje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、小程序開(kāi)發(fā)、虛擬主機(jī)、企業(yè)網(wǎng)站制作、ChatGPT、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)