本文目錄一覽:
關於php操作mysql執行數據庫查詢的一些常用操作匯總
php操作mysql步驟:
1.$connect=mysql_connect(‘localhost’,’root’,’123456′)
or
die(‘數據庫連接失敗。’mysql_error());鏈接mysql。
2.mysql_select_db(‘database’,$connect)選擇鏈接的數據庫。
3.mysql_query(‘Set
names
gb2312′);$sql
=
“select
*
from
blog_article”;準備要查詢的數據。
4.$datas
=
mysql_query($sql);執行sql查詢。
5.$data
=
mysql_fetch_assoc($datas)得到查詢到的緩存在內存中的一條數據。
6.print_r($data);
相同點:三個函數都是返回數據庫中查詢到的一行數據(說的再清楚點就是一條數據)。
不同點:mysql_fetch_assoc()用的是數據庫中相應的字段名作為的key值(也就是數組下標)
如:filed[‘id’]=1;
mysql_fetch_row()用的是自動生成的數字(從0開始依次生成)作為的key值(也就是數組下標)
如:filed[0]=1;
mysql_fetch_array()用的是自動生成的數字(從0開始依次生成)作為的key值(也就是數組下標),而且它還同時生成數據庫中相應的字段名作為的key值(也就是數組下標)
如:
filed[0]=1,filed[‘id’]=1;也就是說,mysql_fetch_array()將mysql_fetch_assoc()和mysql_fetch_row()查詢到的結果合為了一體了。
mysql_fetch_object()與mysql_fetch_assoc()差不多。只是mysql_fetch_assoc()返回的是數組。mysql_fetch_object()返回的是object對象。
mysql_insert_id() 取得上一步
INSERT
操作產生的
ID。
mysql_result()
函數返回結果集中一個字段的值。
mysql_num_fields()
函數返回結果集中字段的數目。
mysql_affected_rows();返回前一次
MySQL
操作所影響的記錄行數。
mysql_num_rows(mysql_query($sql))獲得結果集中行的數目。
mysql_pconnect()
函數打開一個到
MySQL
服務器的持久連接。
mysql_pconnect()
和
mysql_connect()
非常相似,但有兩個主要區別:
1.
當連接的時候本函數將先嘗試尋找一個在同一個主機上用同樣的用戶名和密碼已經打開的(持久)連接,如果找到,則返回此連接標識而不打開新連接。
2.
其次,當腳本執行完畢後到
SQL
服務器的連接不會被關閉,此連接將保持打開以備以後使用(mysql_close()
不會關閉由
mysql_pconnect()
建立的連接)。
mysql_data_seek(mysql_query($sql),8);獲得結果集中的第8條數據。(mysql_num_rows(mysql_query($sql))和mysql_data_seek(mysql_query($sql),8)在mysql_unbuffered_query($sql)不可以使用。)
mysql_unbuffered_query($sql)和mysql_query($sql)效果差不多,但是
mysql_unbuffered_query($sql)不緩存。mysql_query($sql)會緩存查詢的結果。
mysql_close();關閉mysql的最近的鏈接。
mysql_field_flags(mysql_query($sql),6)返回第六個字段的表屬性輸出如:not_null
primary_key
auto_increment
。
mysql_fetch_lengths(mysql_query($sql))返回該條數據的所有字段的每個字段的長度。返回的是一個數字組成的數組。
mysql_field_name(mysql_query($sql),3)返回第三個字段的字段名。
mysql_field_table(mysql_query($sql),0)返回指定字段所在的表名。
mysql_free_result(mysql_query($sql))
函數釋放結果內存。
mysql_get_client_info()
函數返回
MySQL
客戶端信息。
mysql_get_host_info()
取得
MySQL
主機信息。
(PHP)題目描述:請用單例模式定義一個訪問數據庫的工具類DbUtil,並調用
可以寫的。
希望我的回答可以幫到你,有什麼不懂可以追問。
PHP網站怎麼連接到數據庫?
常規方式
常規方式就是按部就班的讀取文件了。其餘的話和上述方案一致。
// 讀取配置文件內容
$handle = fopen(“filepath”, “r”); $content = fread($handle, filesize(“filepath”));123
PHP解析XML
上述兩種讀取文件,其實都是為了PHP解析XML來做準備的。關於PHP解析XML的方式的博客有很多。方式也有很多,像simplexml,XMLReader,DOM啦等等。但是對於比較小型的xml配置文件,simplexml就足夠了。
配置文件
?xml version=”1.0″ encoding=”UTF-8″ ?mysql
!– 為防止出現意外,請按照此標準順序書寫.其實也無所謂了 —
hostlocalhost/host
userroot/user
password123456/password
dbtest/db
port3306/port/mysql12345678910
解析
?php/**
* 作為解析XML配置文件必備工具
*/class XMLUtil {
public static $dbconfigpath = “./db.config.xml”; public static function getDBConfiguration() {
$dbconfig = array (); try { // 讀取配置文件內容
$handle = fopen(self::$dbconfigpath, “r”); $content = fread($handle, filesize(self::$dbconfigpath)); // 獲取xml文檔根節點,進而獲取相關的數據庫信息
$mysql = simplexml_load_string($content); // 將獲取到的xml節點信息賦值給關聯數組,方便接下來的方法調用
$dbconfig[‘host’] = $mysql-host; $dbconfig[‘user’] = $mysql-user; $dbconfig[‘password’] = $mysql-password; $dbconfig[‘db’] = $mysql-db; $dbconfig[‘port’] = $mysql-port; // 將配置信息以關聯數組的形式返回
return $dbconfig;
} catch ( Exception $e ) { throw new RuntimeException ( “mark讀取數據庫配置文件信息出錯!/markbr /” );
} return $dbconfig;
}
}1234567891011121314151617181920212223242526272829
數據庫連接池
對於PHP程序而言,優化永無止境。而數據庫連接池就在一定程度上起到了優化的作用。其使得對用戶的每一個請求而言,無需每次都像數據庫申請鏈接資源。而是通過已存在的數據庫連接池中的鏈接來返回,從時間上,效率上,都是一個大大的提升。
於是,這裡簡單的模擬了一下數據庫連接池的實現。核心在於維護一個“池”。
從池子中取,用畢,歸還給池子。
?php/**x
* PHP中的數據庫 工具類設計
* 郭璞
* 2016年12月23日
*
**/class DbHelper { private $dbconfig; private $dbpool; public $poolsize; public function __construct($poolsize = 20) { if (! file_exists ( “./utils.php” )) { throw new RuntimeException ( “markutils.php文件丟失,無法進行配置文件的初始化操作!/markbr /” );
}else {
require ‘./utils.php’;
} // 初始化 配置文件信息
$this-dbconfig = XMLUtil::getDBConfiguration (); // 準備好數據庫連接池“偽隊列”
$this-poolsize = $poolsize;
$this-dbpool = array (); for($index = 1; $index = $this-poolsize; $index ++) {
$conn = mysqli_connect ( $this-dbconfig [‘host’], $this-dbconfig [‘user’], $this-dbconfig [‘password’], $this-dbconfig [‘db’] ) or die ( “mark連接數據庫失敗!/markbr /” );
array_push ( $this-dbpool, $conn );
}
} /**
* 從數據庫連接池中獲取一個數據庫鏈接資源
*
* @throws ErrorException
* @return mixed
*/
public function getConn() { if (count ( $this-dbpool ) = 0) { throw new ErrorException ( “mark數據庫連接池中已無鏈接資源,請稍後重試!/mark” );
} else { return array_pop ( $this-dbpool );
}
} /**
* 將用完的數據庫鏈接資源放回到數據庫連接池
*
* @param unknown $conn
* @throws ErrorException
*/
public function release($conn) { if (count ( $this-dbpool ) = $this-poolsize) { throw new ErrorException ( “mark數據庫連接池已滿/markbr /” );
} else {
array_push ( $this-dbpool, $conn );
}
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/240540.html