class sqlHelper{
創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設與策劃設計,鼓樓網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設10年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:鼓樓等地區(qū)。鼓樓做網(wǎng)站價格咨詢:13518219792
public $conn;
public $dbname="數(shù)據(jù)庫名稱";
public $username="數(shù)據(jù)庫用戶名";
public $password="數(shù)據(jù)庫密碼";
public $host="localhost";
//連接數(shù)據(jù)庫
public function __construct(){
$this-conn=mysql_connect($this-host,$this-username,$this-password);
if(!$this-conn){
die("連接失敗".mysql_error());
}
mysql_select_db($this-dbname,$this-conn);
}
//執(zhí)行查詢語句
public function execute_dql($sql){
$res=mysql_query($sql,$this-conn);
return $res;
}
//執(zhí)行增填改語句
public function execute_dml($sql){
$b=mysql_query($sql,$this-conn);
if(!$b){
return 3;
}else{
if(mysql_affected_rows($this-conn)){
return 1;//表示OK
}else{
return 2;//表示沒有行收到影響
}
}
}
}
你的
echo "scriptalert('$sql');/script"; //打印測試 , 意思應該是在客戶端通過js把$sql變量打印出來。如果是php,我想應該是這么寫:
echo "scriptalert('{$sql}');/script"; 因為是在字符串中引用變量,你那種寫法可能不會有內(nèi)容。 還有 $sql變量通過上面的兩個操作,F(xiàn)n_select函數(shù)是沒有返回值的,所有$sql=$db-Fn_select獲得的$sql值是空的,是沒有內(nèi)容的。你可以在Fn_select函數(shù)中設置一個返回值,比如return true,或者return false, $sql就有值了。
類我就不寫了,簡單的說function吧
function selectMysql ($columns, $table, $conds=false, $extra=false) {
if (count($columns)) $col = join(",", $columns);
else return false;
$cond = "";
if ($conds) $cond = "WHERE" . join(",", $conds);
$ex = "";
if ($extra) $ex = $extra;
$result = array();
$q = "SELECT $col FROM $table $cond $ex";
$s = mysql_query($q);
while ($r = mysql_fetch_assoc($r)) $result[] = $r;
if (count($result)) return $result;
return false;
}
就寫一個select吧 其他類似。
不過我感覺這樣寫意義不是很大呀~ sql操作最重要的column table conditions 等等你還是要從外面?zhèn)鳌?/p>
這個函數(shù)的column和condition接受數(shù)組(你改成str也行)
table和extra(主要是為了可以放點limit啊之類的)傳入str。
返回一個二維數(shù)組(如果有值的話),$result[]對應sql里的一行記錄。 $result[][]就是某行某列了。
?php
if(!defined("INCLUDE_MYSQL_OK")) {
define("INCLUDE_MYSQL_OK","");
class MySQL_class {
var $debug = true;
var $db,
$id,
$result, /* 查詢結(jié)果指針 */
$rows, /* 查詢結(jié)果行數(shù) */
$fields, /* 查詢結(jié)果列數(shù) */
$data, /* 數(shù)據(jù)結(jié)果 */
$arows, /* 發(fā)生作用的紀錄行數(shù)目 */
$iid; /* 上次插入操作后,可能存在的"AUTO_INCREMENT"屬性字段的值,如果為"0",則為空 */
var $user, $pass, $host, $charset;
/*
* 請注意用戶名和密碼是否正確
*/
function Setup ($host, $user, $pass, $charset='utf8') {
$this-host = $host;
$this-user = $user;
$this-pass = $pass;
$this-charset = $charset;
}
function Connect ($db = "") {
global $CFG_MYSQL_INFO;
if (!$this-host) {
$this-host = $CFG_MYSQL_INFO["host"];
}
if (!$this-user) {
$this-user = $CFG_MYSQL_INFO["user"]; /* 在這里作修改 */
}
if (!$this-pass) {
$this-pass = $CFG_MYSQL_INFO["passwd"]; /* 在這里作修改 */
}
if (!$this-charset) {
$this-charset = "utf8"; /* 在這里作修改 */
}
if (empty($db))
$this-db = $CFG_MYSQL_INFO["database"];
else
$this-db = $db;
$this-id = @mysql_connect($this-host, $this-user, $this-pass);
if (!$this-id)
return false;
$this-SelectDB($this-db); /* 定位到指定數(shù)據(jù)庫 */
$this-Query("SET NAMES '".$this-charset."'");
return true;
}
function Close(){
@mysql_close($this-id);
}
function SelectDB ($db) {
if(!@mysql_select_db($db, $this-id))
return false;
else
return true;
}
function Begin () {
$this-result = @mysql_query("START TRANSACTION WITH CONSISTENT SNAPSHOT", $this-id);
if (!$this-result)
return false;
return true;
}
function Commit () {
$this-result = @mysql_query("COMMIT", $this-id);
if (!$this-result)
return false;
return true;
}
function Rollback () {
$this-result = @mysql_query("ROLLBACK", $this-id);
if (!$this-result)
return false;
return true;
}
function Escape ($str) {
$escstr = mysql_escape_string($str);
return $escstr;
}
# 普通查詢功能,主要用于返回結(jié)果是多條記錄的情況
# 請使用 Fetch 方法取得每條記錄信息
function Query ($query) {
$this-result = @mysql_query($query, $this-id);
if (!$this-result)
{
if ($this-debug)
MySQL_ErrorMsg ("不能執(zhí)行查詢(query): $query");
else
return false;
}
$this-rows = @mysql_num_rows($this-result);
$this-fields = @mysql_num_fields($this-result);
if (!$this-rows) return false;
return true;
}
function QuerySql ($query) {
$ret = @mysql_query($query, $this-id);
if ($ret === false)
{
if ($this-debug)
MySQL_ErrorMsg ("不能執(zhí)行查詢(query): $query");
else
return false;
}
$this-result = $ret;
$this-rows = @mysql_num_rows($this-result);
$this-fields = @mysql_num_fields($this-result);
return true;
}
# 如果查詢結(jié)果為單條記錄時使用,返回結(jié)果存儲于數(shù)組 data 中
function QueryRow ($query) {
$this-result = @mysql_query($query, $this-id);
if (!$this-result)
{
if ($this-debug)
MySQL_ErrorMsg ("不能執(zhí)行查詢(query): $query");
else
return false;
}
$this-rows = @mysql_num_rows($this-result);
$this-data = @mysql_fetch_array($this-result, MYSQL_ASSOC);
//MySQL_ErrorMsg ("不能從查詢結(jié)果中取得數(shù)據(jù) $query");
if (!$this-result || !$this-rows)
return false;
return true;
}
# 移動到指定記錄行,將該行結(jié)果儲存于數(shù)組 data 中
function Fetch ($row) {
if(!@mysql_data_seek($this-result, $row))
//MySQL_ErrorMsg ("不能定位到指定數(shù)據(jù)行 $row");
return false;
$this-data = @mysql_fetch_array($this-result, MYSQL_ASSOC);
//MySQL_ErrorMsg ("不能提取指定數(shù)據(jù)行數(shù)據(jù) $row");
if (!$this-data)
return false;
return true;
}
/* 以下方法將作用于 arows */
/* 此方法將作用于 iid */
function Insert ($query) {
$this-result = @mysql_query($query, $this-id);
if (!$this-result)
{
if ($this-debug)
MySQL_ErrorMsg ("不能執(zhí)行查詢(query): $query");
else
return false;
}
$this-arows = @mysql_affected_rows($this-id);
$this-iid = @mysql_insert_id($this-id);
return true;
}
function Update ($query) {
$this-result = @mysql_query($query, $this-id);
if (!$this-result)
{
if ($this-debug)
MySQL_ErrorMsg ("不能執(zhí)行查詢(query): $query");
else
return false;
}
$this-arows = @mysql_affected_rows($this-id);
if (!$this-arows || $this-arows == -1)
return false;
return true;
}
function Delete ($query) {
$this-result = @mysql_query($query, $this-id);
if (!$this-result)
{
if ($this-debug)
MySQL_ErrorMsg ("不能執(zhí)行查詢(query): $query");
else
return false;
}
$this-arows = @mysql_affected_rows($this-id);
return true;
}
function Error (){
return mysql_error()."(".mysql_errno().")";
}
function Errno (){
return mysql_errno();
}
}
/*
* MySQL_ErrorMsg
* 輸出錯誤信息
*/
function MySQL_ErrorMsg ($msg) {
# 關閉可能影響字符顯示的HTML代碼
echo("/ul/dl/ol\n");
echo("/table/script\n");
# 錯誤信息
$text = "font color=\"#000000\" style=\"font-size: 9pt; line-height: 12pt\"p系統(tǒng)提示:".$msg."br";
$text .= "錯誤信息:";
$text .= mysql_error()."br";
$text .= "錯誤代碼:".mysql_errno()."brbr";
$text .= "請稍候再試,如果問題仍然存在,請與 a href=\"mailto:wuqiong@igenus.org\"系統(tǒng)管理員/a 聯(lián)系!";
$text .= "/font\n";
die($text);
}
}
?
一些細節(jié)的地方自己修改吧 主要是我在別的文件專門定義了全局變量,你看一遍,把應改的地方改一下就好了
我也剛剛學PHP,正在研究中,雖然你只給10分........
首先,將代碼保存到一個文件,如:mysql.class.php
其次,在一個常用的文件里調(diào)用:比如頭部文件header.php,因為我放在根目錄所以用下面方式導入其他文件:
require dirname(__FILE__) . 'include/config.php';
//導入類文件
require dirname(__FILE__) . 'include/mysql.class.php';
//定義一個類及初始化數(shù)據(jù)庫類
$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']);
測試通過,因為我正在使用.....................................
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;
//自動執(zhí)行__construct php5類構建方法,如果PHP4和PHP5同時使用會自動使用PHP5的方法
function __construct($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
//自動執(zhí)行時調(diào)用mysql函數(shù)
$this-mysql($dbhost, $dbuser, $dbpw, $dbname, $pconnect, $quiet);
}
//php4類構建方法,如果沒有 __construct 就自動執(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;
}
}
}
?
我也不是老手,,呵
首先,,數(shù)據(jù)庫配置信息,,dbhost,dbport,dbuser,dbpass,dbname,charset這些參數(shù)最好不要設成全局變量,而從構造函數(shù)傳遞...
這樣做的好處有幾點
這個類可以單獨調(diào)用,,?不用再包含配置文件,,因為你調(diào)用類的php文件一定會先包含配置文件,,再包含數(shù)據(jù)庫操作類,,
通過參數(shù)傳遞可以提高類的獨立性,,這樣,,以后這個類可以被移植到任何系統(tǒng)里面調(diào)用,,,
1、取得結(jié)果集中字段的數(shù)目
這個是由你select?后面的東西來決定的,,如果你用的是select?*
你已經(jīng)寫了這個
$result=mysql_query($str."?limit?".$rows)or?die(mysql_error());
$count=0;
$data=array();
while($rs=mysql_fetch_row($result)){
$data[$count]=$rs;
$count++;
}
@mysql_free_result($result);
return?$result;
你可以在這段代碼@mysql_free_result($result);之前,,用count($data[0])函數(shù)來提取,,,你這里的return?$result是什么意思,,不是已經(jīng)釋放了嗎,,應該是return?$data才對
$result=mysql_query($str."?limit?".$rows)or?die(mysql_error());
這一句你是限制提取條數(shù),,,但這在實際工作中沒有什么用處,,,
一般的分頁語句都是寫在sql里面的limit?x,xx;這樣
你這樣寫,,如果有1W條記錄,,你就沒辦法從數(shù)據(jù)庫的角度去分類
第二個也是一樣的
因為你的SelectRows($str,$rows)返回的是一個二維數(shù)組,,所以要知道有多少條記錄,,,只要用count($data)就可以知道..
$db=new?mysqlconn();
$str="SELECT?*?FROM?xxx?ORDER?BY?XXX?ASC";
$data=$db-SelectRows($str,$rows);
$counts=count($data);//這就是取得的總記錄數(shù)
名稱欄目:php定義一個數(shù)據(jù)庫的類 php定義一個數(shù)據(jù)庫的類數(shù)
網(wǎng)址分享:http://jinyejixie.com/article32/dodhgpc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、品牌網(wǎng)站設計、企業(yè)建站、做網(wǎng)站、定制網(wǎng)站、服務器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)