PHP函式庫(other)
PHP函式庫(other)
- session_abort — Discard session array changes and finish session
- session_cache_expire — 返回當前快取的到期時間
session_cache_expire() 返回 session.cache_expire 的設定值。
請求開始的時候,快取到期時間會被重置為 180,並且儲存在 session.cache_expire 配置項中。 因此,針對每個請求,需要在 session_start() 函式呼叫之前 呼叫 session_cache_expire() 來設定快取到期時間。引數:
new_cache_expire
如果給定 new_cache_expire
,就使用 new_cache_expire
的值設定當前快取到期時間。
Note: 僅在 session.cache_limiter 的設定值 不是 nocache 的時候, 才可以設定
new_cache_expire
引數。
返回值:返回 session.cache_expire 的當前設定值, 以分鐘為單位,預設值是 180 (分鐘)。
/* 設定快取限制為 “private” */
session_cache_limiter(`private`);
$cache_limiter = session_cache_limiter();
/* 設定快取過期時間為 30 分鐘 */
session_cache_expire(30);
$cache_expire = session_cache_expire();
/* 開始會話 */
session_start();
echo “The cache limiter is now set to $cache_limiter<br />”;
echo “The cached session pages expire after $cache_expire minutes”;
?>
- session_cache_limiter — 讀取/設定快取限制器
cache_limiter
如果指定了 cache_limiter
引數, 將使用指定值作為快取限制器的值。
值 | 傳送的響應頭 |
---|---|
public |
Expires:(根據 session.cache_expire 的設定計算得出) Cache-Control: public, max-age=(根據 session.cache_expire 的設定計算得出) Last-Modified:(會話最後儲存時間) |
private_no_expire |
Cache-Control: private, max-age=(根據 session.cache_expire 的設定計算得出), pre-check=(根據 session.cache_expire 的設定計算得出) Last-Modified: (會話最後儲存時間) |
private |
Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: private, max-age=(根據 session.cache_expire 的設定計算得出), pre-check=(根據 session.cache_expire 的設定計算得出) Last-Modified: (會話最後儲存時間) |
nocache |
Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache |
返回值:返回當前所用的快取限制器名稱。
/* 設定快取限制器為 `private` */
session_cache_limiter(`private`);
$cache_limiter = session_cache_limiter();
echo “The cache limiter is now set to $cache_limiter<br />”;
?>
- session_commit — session_write_close 的別名
- session_decode — 解碼會話資料
$data
引數中的已經序列化的會話資料進行解碼, 並且使用解碼後的資料填充 $_SESSION 超級全域性變數。引數:data
編碼後的資料
返回值:成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
- session_destroy — 銷燬一個會話中的全部資料
session_destroy() 銷燬當前會話中的全部資料, 但是不會重置當前會話所關聯的全域性變數, 也不會重置會話 cookie。 如果需要再次使用會話變數, 必須重新呼叫 session_start() 函式。
為了徹底銷燬會話,比如在使用者退出登入的時候,必須同時重置會話 ID。 如果是通過 cookie 方式傳送會話 ID 的,那麼同時也需要 呼叫 setcookie() 函式來 刪除客戶端的會話 cookie。
返回值:成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
// 初始化會話。
// 如果要使用會話,別忘了現在就呼叫:
session_start();
// 重置會話中的所有變數
$_SESSION = array();
// 如果要清理的更徹底,那麼同時刪除會話 cookie
// 注意:這樣不但銷燬了會話中的資料,還同時銷燬了會話本身
if (ini_get(“session.use_cookies”)) {
$params = session_get_cookie_params();
setcookie(session_name(), “, time() – 42000,
$params[“path”], $params[“domain”],
$params[“secure”], $params[“httponly”]
);
}
// 最後,銷燬會話
session_destroy();
?>
- session_encode — 將當前會話資料編碼為一個字串
返回值:返回當前會話編碼後的內容。
- session_get_cookie_params — 獲取會話 cookie 引數
- “lifetime” – cookie 的生命週期,以秒為單位。
- “path” – cookie 的訪問路徑。
- “domain” – cookie 的域。
- “secure” – 僅在使用安全連線時傳送 cookie。
- “httponly” – 只能通過 http 協議訪問 cookie
- session_id — 獲取/設定當前會話 ID
id
如果指定了 id
引數的值, 則使用指定值作為會話 ID。 必須在呼叫 session_start() 函式之前呼叫 session_id()函式。 不同的會話管理器對於會話 ID 中可以使用的字元有不同的限制。 例如檔案會話管理器僅允許會話 ID 中使用以下字元:a-z A-Z 0-9 , (逗號)和 – (減號)
Note: 如果使用 cookie 方式傳送會話 ID,並且指定了
id
引數, 在呼叫 session_start() 之後都會向客戶端傳送新的 cookie, 無論當前的會話 ID 和新指定的會話 ID 是否相同。
返回值:session_id() 返回當前會話ID。 如果當前沒有會話,則返回空字串(“”)。
- session_is_registered — 檢查變數是否在會話中已經註冊
name
變數名稱。
返回值:session_is_registered() 返回 TRUE
則表示 name
變數已經在當前會話中註冊使用,否則返回 FALSE
。
- session_module_name — 獲取/設定會話模組名稱
module
如果指定 module
引數,則使用 指定值作為會話模組。
返回值:返回當前所用的會話模組名稱。
- session_name — 讀取/設定會話名稱
name
引數, session_name() 函式會更新會話名稱, 並返回 原來的 會話名稱。引數:name
用在 cookie 或者 URL 中的會話名稱, 例如:PHPSESSID。 只能使用字母和數字作為會話名稱,建議儘可能的短一些, 並且是望文知意的名字(對於啟用了 cookie 警告的使用者來說,方便其判斷是否要允許此 cookie)。 如果指定了 name
引數, 那麼當前會話也會使用指定值作為名稱。
會話名稱至少需要一個字母,不能全部都使用數字, 否則,每次都會生成一個新的會話 ID。
返回值:返回當前會話名稱。
/* 設定會話名稱為 WebsiteID */
$previous_name = session_name(“WebsiteID”);
echo “The previous session name was $previous_name<br />”;
?>
- session_regenerate_id — 使用新生成的會話 ID 更新現有會話 ID
delete_old_session
是否刪除原 ID 所關聯的會話儲存檔案。
返回值:成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
session_start();
$old_sessionid = session_id();
session_regenerate_id();
$new_sessionid = session_id();
echo “Old Session: $old_sessionid<br />”;
echo “New Session: $new_sessionid<br />”;
print_r($_SESSION);
?>
- session_register_shutdown — 關閉會話
- session_register — Register one or more global variables with the current session
// Use of session_register() is deprecated
$barney = “A big purple dinosaur.”;
session_register(“barney”);
// Use of $_SESSION is preferred, as of PHP 4.1.0
$_SESSION[“zim”] = “An invader from another planet.”;
// The old way was to use $HTTP_SESSION_VARS
$HTTP_SESSION_VARS[“spongebob”] = “He`s got square pants.”;
?>
- session_reset — Re-initialize session array with original values
- session_save_path — 讀取/設定當前會話的儲存路徑
path
指定會話資料儲存的路徑。 必須在呼叫 session_start() 函式之前呼叫 session_save_path() 函式。
Note:
在某些作業系統上,建議使用可以高效處理 大量小尺寸檔案的檔案系統上的路徑來儲存會話資料。 例如,在 Linux 平臺上,對於會話資料儲存的工作而言,reiserfs 檔案系統會比 ext2fs 檔案系統能夠提供更好的效能。
返回值:返回儲存會話資料的路徑。
- session_set_cookie_params — 設定會話 cookie 引數
Cookie 引數可以在 php.ini 檔案中定義,本函式僅在當前指令碼執行過程中有效。 因此,如果要通過函式修改 cookie 引數,需要對每個請求都要 在呼叫 session_start() 函式之前呼叫 session_set_cookie_params() 函式。
本函式會修改執行期 ini 設定值, 可以通過 ini_get() 函式獲取這些值。引數:
lifetime
Cookie 的 生命週期,以秒為單位。
path
此 cookie 的有效 路徑。 on the domain where 設定為“/”表示對於本域上所有的路徑此 cookie 都可用。
domain
Cookie 的作用 域。 例如:“www.php.net”。 如果要讓 cookie 在所有的子域中都可用,此引數必須以點(.)開頭,例如:“.php.net”。
secure
設定為 TRUE
表示 cookie 僅在使用 安全 連結時可用。
httponly
設定為 TRUE
表示 PHP 傳送 cookie 的時候會使用 httponly 標記。
返回值:沒有返回值。
- session_set_save_handler — 設定使用者自定義會話儲存函式
TRUE
, 或者在失敗時返回 FALSE
。這裡使用了 session_set_save_handler() 函式的 OOP 原型 並且使用第二個引數來註冊 shutdown 函式。 當將物件註冊為會話儲存管理器時,建議使用這種方式。
<?php
class MySessionHandler implements SessionHandlerInterface{
// 在這裡實現介面
}
$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();
// 現在可以使用 $_SESSION 儲存以及獲取資料了
- session_start — 啟動新會話或者重用現有會話
TRUE
,反之返回 FALSE
- session_status — Returns the current session status
-
PHP_SESSION_DISABLED
if sessions are disabled. -
PHP_SESSION_NONE
if sessions are enabled, but none exists. -
PHP_SESSION_ACTIVE
if sessions are enabled, and one exists. - session_unregister — Unregister a global variable from the current session
name
from the current session.- session_unset — Free all session variables
- session_write_close — Write session data and end session
- __autoload — 嘗試載入未定義的類
class
待載入的類名。
返回值:沒有返回值。
- call_user_method_array — 呼叫一個使用者方法,同時傳遞引數陣列(已廢棄)
- call_user_method — 對特定物件呼叫使用者方法(已廢棄)
- class_alias — 為一個類建立別名
original
建立別名 alias
。 這個別名類和原有的類完全相同。引數:original
原有的類。
alias
類的別名。
autoload
如果原始類沒有載入,是否使用自動載入(autoload)。
返回值:成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
class foo { }
class_alias(`foo`, `bar`);
$a = new foo;
$b = new bar;
// the objects are the same
var_dump($a == $b, $a === $b); //bool(true) bool(false)
var_dump($a instanceof $b); //bool(true)
// the classes are the same
var_dump($a instanceof foo); //bool(true)
var_dump($a instanceof bar); //bool(true)
var_dump($b instanceof foo); //bool(true)
var_dump($b instanceof bar); //bool(true)
?>
- class_exists — 檢查類是否已定義
class_name
類名。名字的匹配是大小寫不敏感的。
autoload
是否預設呼叫 __autoload。
返回值:如果由 class_name
所指的類已經定義,此函式返回 TRUE
,否則返回 FALSE
。
// 使用前檢查類是否存在
if (class_exists(`MyClass`)) {
$myclass = new MyClass();
}
?>
autoload
parameter 例子:function __autoload($class){
include($class . `.php`);
// Check to see whether the include declared the class
if (!class_exists($class, false)) {
trigger_error(“Unable to load class: $class”, E_USER_WARNING);
}
}
if (class_exists(`MyClass`)) {
$myclass = new MyClass();
}
?>
- get_called_class — 後期靜態繫結(”Late Static Binding”)類的名稱
FALSE
。class foo {
static public function test() {
var_dump(get_called_class());
}
}
class bar extends foo {
}
foo::test();
bar::test();
?>
string(3) "foo" string(3) "bar"
- get_class_methods — 返回由類的方法名組成的陣列
class_name
類名或者物件例項。
返回值:返回由 class_name
指定的類中定義的方法名所組成的陣列。如果出錯,則返回 NULL
。
class myclass {
// constructor
function myclass(){
return(true);
}
// method 1
function myfunc1(){
return(true);
}
// method 2
function myfunc2(){
return(true);
}
}
$class_methods = get_class_methods(`myclass`);
// or
$class_methods = get_class_methods(new myclass());
foreach ($class_methods as $method_name) {
echo “$method_name
“;
}
?>
myclass myfunc1 myfunc2
- get_class_vars — 返回由類的預設屬性組成的陣列
varname => value
的形式存在。引數:class_name
The class name
返回值:Returns an associative array of declared properties visible from the current scope, with their default value. The resulting array elements are in the form of varname => value. In case of an error, it returns FALSE
.
class myclass {
var $var1; // this has no default value…
var $var2 = “xyz”;
var $var3 = 100;
private $var4; // PHP 5
// constructor
function myclass() {
// change some properties
$this->var1 = “foo”;
$this->var2 = “bar”;
return true;
}
}
$my_class = new myclass();
$class_vars = get_class_vars(get_class($my_class));
foreach ($class_vars as $name => $value) {
echo “$name : $value
“;
}
?>
// Before PHP 4.2.0 var2 : xyz var3 : 100 // As of PHP 4.2.0 var1 : var2 : xyz var3 : 100
get_class_vars() and scoping behaviour:
function format($array){
return implode(`|`, array_keys($array)) . ”
“;
}
class TestCase{
public $a = 1;
protected $b = 2;
private $c = 3;
public static function expose(){
echo format(get_class_vars(__CLASS__));
}
}
TestCase::expose();
echo format(get_class_vars(`TestCase`));
?>
// 5.0.0 a| * b| TestCase c a| * b| TestCase c // 5.0.1 - 5.0.2 a|b|c a|b|c // 5.0.3 + a|b|c a
- get_class — 返回物件的類名
obj
所屬類的名字。如果 obj
不是一個物件則返回 FALSE
。class foo {
function foo(){
// implements some logic
}
function name(){
echo “My name is ” , get_class($this) , ”
“;
}
}
// create an object
$bar = new foo();
// external call
echo “Its name is ” , get_class($bar) , ”
“;
// internal call
$bar->name();
?>
Its name is foo My name is foo
引數:object
The tested object. This parameter may be omitted when inside a class.
abstract class bar {
public function __construct(){
var_dump(get_class($this));
var_dump(get_class());
}
}
class foo extends bar {
}
new foo;
?>
string(3) "foo" string(3) "bar"
- get_declared_classes — 返回由已定義類的名字所組成的陣列
print_r(get_declared_classes());
?>
Array ( [0] => stdClass [1] => __PHP_Incomplete_Class [2] => Directory )
- get_declared_interfaces — 返回一個陣列包含所有已宣告的介面
print_r(get_declared_interfaces());
?>
Array ( [0] => Traversable [1] => IteratorAggregate [2] => Iterator [3] => ArrayAccess [4] => reflector [5] => RecursiveIterator [6] => SeekableIterator )
- get_declared_traits — 返回所有已定義的 traits 的陣列
NULL
。- get_object_vars — 返回由物件屬性組成的關聯陣列
obj
指定的物件中定義的屬性組成的關聯陣列。class Point2D {
var $x, $y;
var $label;
function Point2D($x, $y){
$this->x = $x;
$this->y = $y;
}
function setLabel($label){
$this->label = $label;
}
function getPoint(){
return array(“x” => $this->x,
“y” => $this->y,
“label” => $this->label);
}
}
// “$label” is declared but not defined
$p1 = new Point2D(1.233, 3.445);
print_r(get_object_vars($p1));
$p1->setLabel(“point #1”);
print_r(get_object_vars($p1));
?>
Array ( [x] => 1.233 [y] => 3.445 [label] => ) Array ( [x] => 1.233 [y] => 3.445 [label] => point #1 )
- get_parent_class — 返回物件或類的父類名
如果 obj
是物件,則返回物件例項 obj
所屬類的父類名。
如果 obj
是字串,則返回以此字串為名的類的父類名。此功能是在 PHP 4.0.5 中增加的。
<?php
class dad {
function dad(){
// implements some logic
}
}
class child extends dad {
function child(){
echo “I`m ” , get_parent_class($this) , “`s son
“;
}
}
class child2 extends dad {
function child2(){
echo “I`m ” , get_parent_class(`child2`) , “`s son too
“;
}
}
$foo = new child();
$bar = new child2();
?>
I`m dad`s son I`m dad`s son too
引數:object
The tested object or class name
- interface_exists — 檢查介面是否已被定義
interface_name
介面名。
autoload
預設是否呼叫 __autoload。
返回值:本函式在由 interface_name
給出的介面已定義時返回 TRUE
,否則返回 FALSE
。
// 在嘗試使用前先檢查介面是否存在
if (interface_exists(`MyInterface`)) {
class MyClass implements MyInterface{
// Methods
}
}
?>
- is_a — 如果物件屬於該類或該類是此物件的父類則返回 TRUE
object
是該類或該類是此物件的父類。引數:object
The tested object
class_name
The class name
allow_string
If this parameter set to FALSE
, string class name as object
is not allowed. This also prevents from calling autoloader if the class doesn`t exist.
返回值:Returns TRUE
if the object is of this class or has this class as one of its parents, FALSE
otherwise.
// define a class
class WidgetFactory{
var $oink = `moo`;
}
// create a new object
$WF = new WidgetFactory();
if (is_a($WF, `WidgetFactory`)) {
echo “yes, $WF is still a WidgetFactory
“;
}
?>
if ($WF instanceof WidgetFactory) {
echo `Yes, $WF is a WidgetFactory`;
}
?>
- is_subclass_of — 如果此物件是該類的子類,則返回 TRUE
object
所屬類是類 class_name
的子類,則返回 TRUE
,否則返回 FALSE
。引數:object
A class name or an object instance
class_name
The class name
allow_string
If this parameter set to false, string class name as object
is not allowed. This also prevents from calling autoloader if the class doesn`t exist.
返回值:This function returns TRUE
if the object object
, belongs to a class which is a subclass of class_name
, FALSE
otherwise.
// define a class
class WidgetFactory{
var $oink = `moo`;
}
// define a child class
class WidgetFactory_Child extends WidgetFactory{
var $oink = `oink`;
}
// create a new object
$WF = new WidgetFactory();
$WFC = new WidgetFactory_Child();
if (is_subclass_of($WFC, `WidgetFactory`)) {
echo “yes, $WFC is a subclass of WidgetFactory
“;
} else {
echo “no, $WFC is not a subclass of WidgetFactory
“;
}
if (is_subclass_of($WF, `WidgetFactory`)) {
echo “yes, $WF is a subclass of WidgetFactory
“;
} else {
echo “no, $WF is not a subclass of WidgetFactory
“;
}
// usable only since PHP 5.0.3
if (is_subclass_of(`WidgetFactory_Child`, `WidgetFactory`)) {
echo “yes, WidgetFactory_Child is a subclass of WidgetFactory
“;
} else {
echo “no, WidgetFactory_Child is not a subclass of WidgetFactory
“;
}
?>
yes, $WFC is a subclass of WidgetFactory no, $WF is not a subclass of WidgetFactory yes, WidgetFactory_Child is a subclass of WidgetFactory
- method_exists — 檢查類的方法是否存在
object
中。引數:object
物件示例或者類名。
method_name
方法名。
返回值:如果 method_name
所指的方法在 object
所指的物件類中已定義,則返回 TRUE
,否則返回 FALSE
。
$directory = new Directory(`.`);
var_dump(method_exists($directory,`read`)); //bool(true)
?>
var_dump(method_exists(`Directory`,`read`)); //bool(true)
?>
- property_exists — 檢查物件或類是否具有該屬性
property
是否存在於指定的類中(以及是否能在當前範圍內訪問)。引數:class
字串形式的類名或要檢查的類的一個物件
property
屬性的名字
返回值:如果該屬性存在則返回 TRUE
,如果不存在則返回 FALSE
,出錯返回 NULL
。
class myClass {
public $mine;
private $xpto;
static protected $test;
static function test() {
var_dump(property_exists(`myClass`, `xpto`)); //true
}
}
var_dump(property_exists(`myClass`, `mine`)); //true
var_dump(property_exists(new myClass, `mine`)); //true
var_dump(property_exists(`myClass`, `xpto`)); //true, as of PHP 5.3.0
var_dump(property_exists(`myClass`, `bar`)); //false
var_dump(property_exists(`myClass`, `test`)); //true, as of PHP 5.3.0
myClass::test();
?>
- trait_exists — 檢查指定的 trait 是否存在
traitname
待檢查的 trait 的名稱
autoload
如果尚未載入,是否使用自動載入(autoload)。
返回值:如果 trait 存在返回 TRUE
,不存在則返回 FALSE
。發生錯誤的時候返回 NULL
。
- mysql_affected_rows — 取得前一次 MySQL 操作所影響的記錄行數
link_identifier
關聯的 INSERT,UPDATE 或 DELETE 查詢所影響的記錄行數。引數:link_identifier
MySQL 連線。如不指定連線標識,則使用由 mysql_connect() 最近開啟的連線。如果沒有找到該連線,會嘗試不帶引數呼叫 mysql_connect() 來建立。如沒有找到連線或無法建立連線,則會生成 E_WARNING
級別的錯誤。
mysql_affected_rows() 例子:
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
if (!$link) {
die(`Could not connect: ` . mysql_error());
}
mysql_select_db(`mydb`);
/* 本例返回被刪除記錄的準確數目 */
mysql_query(`DELETE FROM mytable WHERE id < 10`);
printf(“Records deleted: %d
“, mysql_affected_rows());
/* 對於非真值的 WHERE 子句,應返回 0 */
mysql_query(`DELETE FROM mytable WHERE 0`);
printf(“Records deleted: %d
“, mysql_affected_rows());
?>
Records deleted: 10 Records deleted: 0
使用事務處理的 mysql_affected_rows() 例子:
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
if (!$link) {
die(`Could not connect: ` . mysql_error());
}
mysql_select_db(`mydb`);
/* Update records */
mysql_query(“UPDATE mytable SET used=1 WHERE id < 10”);
printf (“Updated records: %d
“, mysql_affected_rows());
mysql_query(“COMMIT”);
?>
Updated Records: 10
- mysql_client_encoding — 返回字符集的名稱
link_identifier
MySQL 連線。如不指定連線標識,則使用由 mysql_connect() 最近開啟的連線。如果沒有找到該連線,會嘗試不帶引數呼叫 mysql_connect() 來建立。如沒有找到連線或無法建立連線,則會生成 E_WARNING
級別的錯誤。
返回值:返回當前連線的預設字符集名稱。
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
$charset = mysql_client_encoding($link);
echo “The current character set is: $charset
“;
?>
The current character set is: latin1
- mysql_close — 關閉 MySQL 連線
link_identifier
,則關閉上一個開啟的連線。引數:link_identifier
MySQL 連線. 如果該連線識別符號未給出, 將使用最近一次mysql_connect()建立的連線. 如果沒有找到可使用的連線, 將產生一個 E_WARNING
錯誤.
返回值:成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
if (!$link) {
die(`Could not connect: ` . mysql_error());
}
echo `Connected successfully`;
mysql_close($link);
?>
Connected successfully
- mysql_connect — 開啟一個到 MySQL 伺服器的連線
server
MySQL 伺服器。可以包括埠號,例如 “hostname:port”,或者到本地套接字的路徑,例如對於 localhost 的 “:/path/to/socket”。
如果 PHP 指令 mysql.default_host 未定義(預設情況),則預設值是 `localhost:3306`。 在 SQL 安全模式 時,引數被忽略,總是使用 `localhost:3306`。
username
使用者名稱。預設值由 mysql.default_user 定義。 在 SQL 安全模式 時,引數被忽略,總是使用伺服器程式所有者的使用者名稱。
password
密碼。預設值由mysql.default_password定義。在 SQL 安全模式 時,引數被忽略,總是使用空密碼。
new_link
如果用同樣的引數第二次呼叫 mysql_connect(),將不會建立新連線,而將返回已經開啟的連線標識。引數new_link
改變此行為並使 mysql_connect() 總是開啟新的連線,甚至當 mysql_connect() 曾在前面被用同樣的引數呼叫過。
client_flags
client_flags
引數可以是以下常量的組合:MYSQL_CLIENT_SSL
,MYSQL_CLIENT_COMPRESS
,MYSQL_CLIENT_IGNORE_SPACE
或MYSQL_CLIENT_INTERACTIVE
。進一步資訊見MySQL 客戶端常量。
返回值:如果成功則返回一個 MySQL 連線標識, 或者在失敗時返回 FALSE
。
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
if (!$link) {
die(`Could not connect: ` . mysql_error());
}
echo `Connected successfully`;
mysql_close($link);
?>
// we connect to example.com and port 3307
$link = mysql_connect(`example.com:3307`, `mysql_user`, `mysql_password`);
if (!$link) {
die(`Could not connect: ` . mysql_error());
}
echo `Connected successfully`;
mysql_close($link);
// we connect to localhost at port 3307
$link = mysql_connect(`127.0.0.1:3307`, `mysql_user`, `mysql_password`);
if (!$link) {
die(`Could not connect: ` . mysql_error());
}
echo `Connected successfully`;
mysql_close($link);
?>
// we connect to localhost and socket e.g. /tmp/mysql.sock
//variant 1: ommit localhost
$link = mysql_connect(`/tmp/mysql`, `mysql_user`, `mysql_password`);
if (!$link) {
die(`Could not connect: ` . mysql_error());
}
echo `Connected successfully`;
mysql_close($link);
// variant 2: with localhost
$link = mysql_connect(`localhost:/tmp/mysql.sock`, `mysql_user`, `mysql_password`);
if (!$link) {
die(`Could not connect: ` . mysql_error());
}
echo `Connected successfully`;
mysql_close($link);
?>
- mysql_create_db — 新建一個 MySQL 資料庫
database_name
要建立的資料庫名。
link_identifier
MySQL 連線。如不指定連線標識,則使用由 mysql_connect() 最近開啟的連線。如果沒有找到該連線,會嘗試不帶引數呼叫 mysql_connect() 來建立。如沒有找到連線或無法建立連線,則會生成 E_WARNING
級別的錯誤。
返回值:成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
if (!$link) {
die(`Could not connect: ` . mysql_error());
}
$sql = `CREATE DATABASE my_db`;
if (mysql_query($sql, $link)) {
echo “Database my_db created successfully
“;
} else {
echo `Error creating database: ` . mysql_error() . ”
“;
}
?>
Database my_db created successfully
- mysql_data_seek — 移動內部結果的指標
result
resource 型的結果集。此結果集來自對 mysql_query() 的呼叫。
row_number
想要設定的新的結果集指標的行數。
返回值:成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
if (!$link) {
die(`Could not connect: ` . mysql_error());
}
$db_selected = mysql_select_db(`sample_db`);
if (!$db_selected) {
die(`Could not select database: ` . mysql_error());
}
$query = `SELECT last_name, first_name FROM friends`;
$result = mysql_query($query);
if (!$result) {
die(`Query failed: ` . mysql_error());
}
/* fetch rows in reverse order */
for ($i = mysql_num_rows($result) – 1; $i >= 0; $i–) {
if (!mysql_data_seek($result, $i)) {
echo “Cannot seek to row $i: ” . mysql_error() . ”
“;
continue;
}
if (!($row = mysql_fetch_assoc($result))) {
continue;
}
echo $row[`last_name`] . ` ` . $row[`first_name`] . “<br />
“;
}
mysql_free_result($result);
?>
- mysql_db_name — 取得結果資料
result
mysql_list_dbs() 呼叫所返回的結果指標。
row
結果集中的行號。
field
欄位名。
返回值:如果成功則返回資料庫名,失敗返回 FALSE
。如果返回了 FALSE
,用 mysql_error() 來判斷錯誤的種類。
error_reporting(E_ALL);
$link = mysql_connect(`dbhost`, `username`, `password`);
$db_list = mysql_list_dbs($link);
$i = 0;
$cnt = mysql_num_rows($db_list);
while ($i < $cnt) {
echo mysql_db_name($db_list, $i) . ”
“;
$i++;
}
?>
- mysql_db_query — 傳送一條 MySQL 查詢
根據查詢結果返回一個正的 MySQL 結果資源號,出錯時返回 FALSE
。本函式會對 INSERT/UPDATE/DELETE 查詢返回TRUE
/FALSE
來指示成功或失敗。
mysql_db_query() 選擇一個資料庫並在其上執行查詢。如果沒有提供可選的連線標識,本函式會去找一個到 MySQL 伺服器的已開啟的連線,如果找不到已開啟連線則會嘗試無引數呼叫 mysql_connect() 來建立一個。
注意此函式不會切換回先前連線到的資料庫。換句話說,不能用此函式臨時在另一個資料庫上執行 sql 查詢,只能手工切換回來。強烈建議使用者在 sql 查詢中使用 database.table 語法來替代此函式。
- mysql_drop_db — 丟棄(刪除)一個 MySQL 資料庫
mysql_drop_db() 嘗試丟棄(刪除)指定連線標識所關聯的伺服器上的一整個資料庫。
成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
為向下相容也可以用 mysql_dropdb(),但反對這樣做。
不提倡使用 mysql_drop_db() 函式最好用 mysql_query() 提交一條 SQL DROP DATABASE 語句來替代。
database_name
The name of the database that will be deleted.link_identifier
MySQL 連線。如不指定連線標識,則使用由 mysql_connect() 最近開啟的連線。如果沒有找到該連線,會嘗試不帶引數呼叫 mysql_connect() 來建立。如沒有找到連線或無法建立連線,則會生成 E_WARNING
級別的錯誤。返回值:成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
if (!$link) {
die(`Could not connect: ` . mysql_error());
}
$sql = `DROP DATABASE my_db`;
if (mysql_query($sql, $link)) {
echo “Database my_db was successfully dropped
“;
} else {
echo `Error dropping database: ` . mysql_error() . ”
“;
}
?>
- mysql_errno — 返回上一個 MySQL 操作中的錯誤資訊的數字編碼
返回上一個 MySQL 函式的錯誤號碼,如果沒有出錯則返回 0(零)。
從 MySQL 資料庫後端來的錯誤不再發出警告,要用 mysql_errno() 來提取錯誤程式碼。注意本函式僅返回最近一次 MySQL 函式的執行(不包括 mysql_error() 和 mysql_errno())的錯誤程式碼,因此如果要使用此函式,確保在呼叫另一個 MySQL 函式之前檢查它的值。
<?php
mysql_connect(“localhost”, “mysql_user”, “mysql_password”);
mysql_select_db(“nonexistentdb”);
echo mysql_errno() . “: ” . mysql_error(). ”
“;
mysql_select_db(“kossu”);
mysql_query(“SELECT * FROM nonexistenttable”);
echo mysql_errno() . “: ” . mysql_error() . ”
“;
?>
1049: Unknown database `nonexistentdb` 1146: Table `kossu.nonexistenttable` doesn`t exist
- mysql_error — 返回上一個 MySQL 操作產生的文字錯誤資訊
返回上一個 MySQL 函式的錯誤文字,如果沒有出錯則返回 “(空字串)。如果沒有指定連線資源號,則使用上一個成功開啟的連線從 MySQL 伺服器提取錯誤資訊。
從 MySQL 資料庫後端來的錯誤不再發出警告,要用 mysql_error() 來提取錯誤文字。注意本函式僅返回最近一次 MySQL 函式的執行(不包括 mysql_error() 和 mysql_errno())的錯誤文字,因此如果要使用此函式,確保在呼叫另一個 MySQL 函式之前檢查它的值。
<?php
mysql_connect(“localhost”, “mysql_user”, “mysql_password”);
mysql_select_db(“nonexistentdb”);
echo mysql_errno() . “: ” . mysql_error(). ”
“;
mysql_select_db(“kossu”);
mysql_query(“SELECT * FROM nonexistenttable”);
echo mysql_errno() . “: ” . mysql_error() . ”
“;
?>
1049: Unknown database `nonexistentdb` 1146: Table `kossu.nonexistenttable` doesn`t exist
- mysql_escape_string — 轉義一個字串用於 mysql_query
$item = “Zak`s Laptop”;
$escaped_item = mysql_escape_string($item);
printf (“Escaped string: %s
“, $escaped_item);
?>
Escaped string: Zak`s Laptop
- mysql_fetch_array — 從結果集中取得一行作為關聯陣列,或數字陣列,或二者兼有
FALSE
。mysql_connect(“localhost”, “mysql_user”, “mysql_password”) or
die(“Could not connect: ” . mysql_error());
mysql_select_db(“mydb”);
$result = mysql_query(“SELECT id, name FROM mytable”);
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf (“ID: %s Name: %s”, $row[0], $row[1]);
}
mysql_free_result($result);
?>
mysql_connect(“localhost”, “mysql_user”, “mysql_password”) or
die(“Could not connect: ” . mysql_error());
mysql_select_db(“mydb”);
$result = mysql_query(“SELECT id, name FROM mytable”);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf (“ID: %s Name: %s”, $row[“id”], $row[“name”]);
}
mysql_free_result($result);
?>
mysql_connect(“localhost”, “mysql_user”, “mysql_password”) or
die(“Could not connect: ” . mysql_error());
mysql_select_db(“mydb”);
$result = mysql_query(“SELECT id, name FROM mytable”);
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf (“ID: %s Name: %s”, $row[0], $row[“name”]);
}
mysql_free_result($result);
?>
- mysql_fetch_assoc — 從結果集中取得一行作為關聯陣列
result
resource 型的結果集。此結果集來自對 mysql_query() 的呼叫。
返回值:
返回根據從結果集取得的行生成的關聯陣列;如果沒有更多行則返回 FALSE
。
如果結果中的兩個或以上的列具有相同欄位名,最後一列將優先。要訪問同名的其它列,要麼用 mysql_fetch_row()來取得數字索引或給該列起個別名。 參見 mysql_fetch_array() 例子中有關別名說明。
<?php
$conn = mysql_connect(“localhost”, “mysql_user”, “mysql_password”);
if (!$conn) {
echo “Unable to connect to DB: ” . mysql_error();
exit;
}
if (!mysql_select_db(“mydbname”)) {
echo “Unable to select mydbname: ” . mysql_error();
exit;
}
$sql = “SELECT id as userid, fullname, userstatus
FROM sometable
WHERE userstatus = 1″;
$result = mysql_query($sql);
if (!$result) {
echo “Could not successfully run query ($sql) from DB: ” . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo “No rows found, nothing to print so am exiting”;
exit;
}
// While a row of data exists, put that row in $row as an associative array
// Note: If you`re expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you`ll
// then create $userid, $fullname, and $userstatus
while ($row = mysql_fetch_assoc($result)) {
echo $row[“userid”];
echo $row[“fullname”];
echo $row[“userstatus”];
}
mysql_free_result($result);
?>
- mysql_fetch_field — 從結果集中取得列資訊並作為物件返回
返回一個包含欄位資訊的物件。
mysql_fetch_field() 可以用來從某個查詢結果中取得欄位的資訊。如果沒有指定欄位偏移量,則下一個尚未被mysql_fetch_field() 取得的欄位被提取。
物件的屬性為:
- name – 列名
- table – 該列所在的表名
- max_length – 該列最大長度
- not_null – 1,如果該列不能為
NULL
- primary_key – 1,如果該列是 primary key
- unique_key – 1,如果該列是 unique key
- multiple_key – 1,如果該列是 non-unique key
- numeric – 1,如果該列是 numeric
- blob – 1,如果該列是 BLOB
- type – 該列的型別
- unsigned – 1,如果該列是無符號數
- zerofill – 1,如果該列是 zero-filled
mysql_connect(`localhost:3306`, $user, $password)
or die(“Could not connect: ” . mysql_error());
mysql_select_db(“database”);
$result = mysql_query(“select * from table”)
or die(“Query failed: ” . mysql_error());
/* get column metadata */
$i = 0;
while ($i < mysql_num_fields($result)) {
echo “Information for column $i:<br />
“;
$meta = mysql_fetch_field($result);
if (!$meta) {
echo “No information available<br />
“;
}
echo “<pre>
blob: $meta->blob
max_length: $meta->max_length
multiple_key: $meta->multiple_key
name: $meta->name
not_null: $meta->not_null
numeric: $meta->numeric
primary_key: $meta->primary_key
table: $meta->table
type: $meta->type
unique_key: $meta->unique_key
unsigned: $meta->unsigned
zerofill: $meta->zerofill
</pre>”;
$i++;
}
mysql_free_result($result);
?>
- mysql_fetch_lengths — 取得結果集中每個輸出的長度
以陣列返回上一次用 mysql_fetch_row() 取得的行中每個欄位的長度,如果出錯返回 FALSE
。
mysql_fetch_lengths() 將上一次 mysql_fetch_row(),mysql_fetch_array() 和 mysql_fetch_object() 所返回的每個列的長度儲存到一個陣列中,偏移量從 0 開始。引數:
- mysql_fetch_object — 從結果集中取得一行作為物件
返回根據所取得的行生成的物件,如果沒有更多行則返回 FALSE
。
mysql_fetch_object() 和 mysql_fetch_array() 類似,只有一點區別 – 返回一個物件而不是陣列。間接地也意味著只能通過欄位名來訪問陣列,而不是偏移量(數字是合法的屬性名)。
mysql_fetch_object() example:
mysql_connect(“hostname”, “user”, “password”);
mysql_select_db(“mydb”);
$result = mysql_query(“select * from mytable”);
while ($row = mysql_fetch_object($result)) {
echo $row->user_id;
echo $row->fullname;
}
mysql_free_result($result);
?>
class foo {
public $name;
}
mysql_connect(“hostname”, “user”, “password”);
mysql_select_db(“mydb”);
$result = mysql_query(“select name from mytable limit 1”);
$obj = mysql_fetch_object($result, `foo`);
var_dump($obj);
?>
- mysql_fetch_row — 從結果集中取得一行作為列舉陣列
返回根據所取得的行生成的陣列,如果沒有更多行則返回 FALSE
。
mysql_fetch_row() 從和指定的結果標識關聯的結果集中取得一行資料並作為陣列返回。每個結果的列儲存在一個陣列的單元中,偏移量從 0 開始。
依次呼叫 mysql_fetch_row() 將返回結果集中的下一行,如果沒有更多行則返回 FALSE
。
<?php
$result = mysql_query(“SELECT id,email FROM people WHERE id = `42`”);
if (!$result) {
echo `Could not run query: ` . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
echo $row[0]; // 42
echo $row[1]; // the email value
?>
- mysql_field_flags — 從結果中取得和指定欄位關聯的標誌
- mysql_field_len — 返回指定欄位的長度
mysql_field_len() 返回指定欄位的長度。
為向下相容仍然可以使用 mysql_fieldlen(),但反對這樣做。
- mysql_field_name — 取得結果中指定欄位的欄位名
result
必須是一個合法的結果識別符號,field_index
是該欄位的數字偏移量。引數:result
resource 型的結果集。此結果集來自對 mysql_query() 的呼叫。
field_offset
數值型欄位偏移量。 field_offset
從 0 開始。如果 field_offset
不存在,則會發出一個 E_WARNING
級別的錯誤
返回值:The name of the specified field index on success 或者在失敗時返回 FALSE
.
/* The users table consists of three fields:
* user_id
* username
* password.
*/
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
if (!$link) {
die(`Could not connect to MySQL server: ` . mysql_error());
}
$dbname = `mydb`;
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected) {
die(“Could not set $dbname: ” . mysql_error());
}
$res = mysql_query(`select * from users`, $link);
echo mysql_field_name($res, 0) . ”
“;
echo mysql_field_name($res, 2);
?>
user_id password
- mysql_field_seek — 將結果集中的指標設定為制定的欄位偏移量
- mysql_field_table — 取得指定欄位所在的表名
返回指定欄位所在的表的名字。
為向下相容仍然可以使用 mysql_fieldtable(),但反對這樣做。
- mysql_field_type — 取得結果集中指定欄位的型別
result
resource 型的結果集。此結果集來自對 mysql_query() 的呼叫。
field_offset
數值型欄位偏移量。 field_offset
從 0 開始。如果 field_offset
不存在,則會發出一個 E_WARNING
級別的錯誤
mysql_connect(“localhost”, “mysql_username”, “mysql_password”);
mysql_select_db(“mysql”);
$result = mysql_query(“SELECT * FROM func”);
$fields = mysql_num_fields($result);
$rows = mysql_num_rows($result);
$table = mysql_field_table($result, 0);
echo “Your `”.$table.”` table has “.$fields.” fields and “.$rows.” record(s)
“;
echo “The table has the following fields:
“;
for ($i=0; $i < $fields; $i++) {
$type = mysql_field_type($result, $i);
$name = mysql_field_name($result, $i);
$len = mysql_field_len($result, $i);
$flags = mysql_field_flags($result, $i);
echo $type.” “.$name.” “.$len.” “.$flags.”
“;
}
mysql_free_result($result);
mysql_close();
?>
Your `func` table has 4 fields and 1 record(s) The table has the following fields: string name 64 not_null primary_key binary int ret 1 not_null string dl 128 not_null string type 9 not_null enum
- mysql_free_result — 釋放結果記憶體
mysql_free_result() 將釋放所有與結果識別符號 result
所關聯的記憶體。
mysql_free_result() 僅需要在考慮到返回很大的結果集時會佔用多少記憶體時呼叫。在指令碼結束後所有關聯的記憶體都會被自動釋放。
成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
為向下相容仍然可以使用 mysql_freeresult(),但反對這樣做。引數:
result
resource 型的結果集。此結果集來自對 mysql_query() 的呼叫。
返回值:成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
$result = mysql_query(“SELECT id,email FROM people WHERE id = `42`”);
if (!$result) {
echo `Could not run query: ` . mysql_error();
exit;
}
/* Use the result, assuming we`re done with it afterwards */
$row = mysql_fetch_assoc($result);
/* Now we free up the result and continue on with our script */
mysql_free_result($result);
echo $row[`id`];
echo $row[`email`];
?>
- mysql_get_client_info — 取得 MySQL 客戶端資訊
printf (“MySQL client info: %s
“, mysql_get_client_info());
?>
MySQL client info: 3.23.39
- mysql_get_host_info — 取得 MySQL 主機資訊
link_identifier
所使用的連線方式,包括伺服器的主機名。如果省略 link_identifier
,則使用上一個開啟的連線。mysql_connect(“localhost”, “mysql_user”, “mysql_password”) or
die(“Could not connect: ” . mysql_error());
printf (“MySQL host info: %s
“, mysql_get_host_info());
?>
MySQL host info: Localhost via UNIX socket
- mysql_get_proto_info — 取得 MySQL 協議資訊
link_identifier
所使用的協議版本。如果省略 link_identifier
,則使用上一個開啟的連線。mysql_connect(“localhost”, “mysql_user”, “mysql_password”) or
die(“Could not connect: ” . mysql_error());
printf (“MySQL protocol version: %s
“, mysql_get_proto_info());
?>
MySQL protocol version: 10
- mysql_get_server_info — 取得 MySQL 伺服器資訊
link_identifier
所使用的伺服器版本。如果省略 link_identifier
,則使用上一個開啟的連線。mysql_connect(“localhost”, “mysql_user”, “mysql_password”) or
die(“Could not connect: ” . mysql_error());
printf (“MySQL server version: %s
“, mysql_get_server_info());
?>
MySQL server version: 4.0.1-alpha
- mysql_info — 取得最近一條查詢的資訊
mysql_info() 返回通過給定的 link_identifier
所進行的最新一條查詢的詳細資訊。如果沒有指定link_identifier
,則假定為上一個開啟的連線。
mysql_info() 對以下列出的所有語句返回一個字串。對於其它任何語句返回 FALSE
。字串的格式取決於給出的語句。
- mysql_insert_id — 取得上一步 INSERT 操作產生的 ID
mysql_insert_id() 返回給定的 link_identifier
中上一步 INSERT 查詢中產生的 AUTO_INCREMENT 的 ID 號。如果沒有指定 link_identifier
,則使用上一個開啟的連線。
如果上一查詢沒有產生 AUTO_INCREMENT 的值,則 mysql_insert_id() 返回 0。如果需要儲存該值以後使用,要確保在產生了值的查詢之後立即呼叫 mysql_insert_id()。
<?php
mysql_connect(“localhost”, “mysql_user”, “mysql_password”) or
die(“Could not connect: ” . mysql_error());
mysql_select_db(“mydb”);
mysql_query(“INSERT INTO mytable (product) values (`kossu`)”);
printf (“Last inserted record has id %d
“, mysql_insert_id());
?>
- mysql_list_dbs — 列出 MySQL 伺服器中所有的資料庫
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
$db_list = mysql_list_dbs($link);
while ($row = mysql_fetch_object($db_list)) {
echo $row->Database . ”
“;
}
?>
database1 database2 database3 ...
- mysql_list_fields — 列出 MySQL 結果中的欄位
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
$fields = mysql_list_fields(“database1”, “table1”, $link);
$columns = mysql_num_fields($fields);
for ($i = 0; $i < $columns; $i++) {
echo mysql_field_name($fields, $i) . ”
“;
}
field1 field2 field3 ...
為向下相容仍然可以使用 mysql_listfields(),但反對這樣做。
- mysql_list_processes — 列出 MySQL 程式
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
$result = mysql_list_processes($link);
while ($row = mysql_fetch_assoc($result)){
printf(“%s %s %s %s %s
“, $row[“Id”], $row[“Host”], $row[“db”],
$row[“Command”], $row[“Time”]);
}
mysql_free_result ($result);
?>
1 localhost test Processlist 0 4 localhost mysql sleep 5
- mysql_list_tables — 列出 MySQL 資料庫中的表
mysql_list_tables() 接受一個資料庫名並返回和 mysql_query() 函式很相似的一個結果指標。用 mysql_tablename()函式來遍歷此結果指標,或者任何使用結果表的函式,例如 mysql_fetch_array()。
database
引數是需要被取得其中的的表名的資料庫名。如果失敗 mysql_list_tables() 返回 FALSE
。
為向下相容仍然可以使用本函式的別名 mysql_listtables(),但反對這樣做。
<?php
$dbname = `mysql_dbname`;
if (!mysql_connect(`mysql_host`, `mysql_user`, `mysql_password`)) {
print `Could not connect to mysql`;
exit;
}
$result = mysql_list_tables($dbname);
if (!$result) {
print “DB Error, could not list tables
“;
print `MySQL Error: ` . mysql_error();
exit;
}
while ($row = mysql_fetch_row($result)) {
print “Table: $row[0]
“;
}
mysql_free_result($result);
?>
- mysql_num_fields — 取得結果集中欄位的數目
- mysql_num_rows — 取得結果集中行的數目
$link = mysql_connect(“localhost”, “mysql_user”, “mysql_password”);
mysql_select_db(“database”, $link);
$result = mysql_query(“SELECT * FROM table1”, $link);
$num_rows = mysql_num_rows($result);
echo “$num_rows Rows
“;
?>
- mysql_pconnect — 開啟一個到 MySQL 伺服器的持久連線
如果成功則返回一個正的 MySQL 持久連線識別符號,出錯則返回 FALSE
。
mysql_pconnect() 建立一個到 MySQL 伺服器的連線。如果沒有提供可選引數,則使用如下預設值:server
= `localhost:3306`,username
= 伺服器程式所有者的使用者名稱,password
= 空密碼。client_flags
引數可以是以下常量的組合:MYSQL_CLIENT_COMPRESS,MYSQL_CLIENT_IGNORE_SPACE 或者 MYSQL_CLIENT_INTERACTIVE。
server
引數也可以包括埠號,例如 “hostname:port”,或者是本機套接字的的路徑,例如 “:/path/to/socket”。
mysql_pconnect() 和 mysql_connect() 非常相似,但有兩個主要區別。
首先,當連線的時候本函式將先嚐試尋找一個在同一個主機上用同樣的使用者名稱和密碼已經開啟的(持久)連線,如果找到,則返回此連線標識而不開啟新連線。
其次,當指令碼執行完畢後到 SQL 伺服器的連線不會被關閉,此連線將保持開啟以備以後使用(mysql_close() 不會關閉由 mysql_pconnect() 建立的連線)。
可選引數 client_flags
自 PHP 4.3.0 版起可用。
此種連線稱為“持久的”。
- mysql_ping — Ping 一個伺服器連線,如果沒有連線則重新連線
TRUE
,否則返回FALSE
。- mysql_query — 傳送一條 MySQL 查詢
link_identifier
關聯的伺服器中的當前活動資料庫傳送一條查詢(不支援多條查詢)引數:query
SQL 查詢語句
查詢字串不應以分號結束。 查詢中被嵌入的資料應該正確地轉義。
link_identifier
MySQL 連線。如不指定連線標識,則使用由 mysql_connect() 最近開啟的連線。如果沒有找到該連線,會嘗試不帶引數呼叫 mysql_connect() 來建立。如沒有找到連線或無法建立連線,則會生成 E_WARNING
級別的錯誤。
返回值:
mysql_query() 僅對 SELECT,SHOW,DESCRIBE, EXPLAIN 和其他語句 語句返回一個 resource,如果查詢出現錯誤則返回 FALSE
。
對於其它型別的 SQL 語句,比如INSERT, UPDATE, DELETE, DROP 之類, mysql_query() 在執行成功時返回 TRUE
,出錯時返回 FALSE
。
返回的結果資源應該傳遞給 mysql_fetch_array() 和其他函式來處理結果表,取出返回的資料。
假定查詢成功,可以呼叫 mysql_num_rows() 來檢視對應於 SELECT 語句返回了多少行,或者呼叫mysql_affected_rows() 來檢視對應於 DELETE,INSERT,REPLACE 或 UPDATE 語句影響到了多少行。
如果沒有許可權訪問查詢語句中引用的表時,mysql_query() 也會返回 FALSE
。
無效的查詢:
<?php
$result = mysql_query(`SELECT * WHERE 1=1`);
if (!$result) {
die(`Invalid query: ` . mysql_error());
}
?>
有效的查詢:
<?php
// 這應該由使用者提供,下面是一個示例
$firstname = `fred`;
$lastname = `fox`;
// 構造查詢
// 這是執行 SQL 最好的方式
// 更多例子參見 mysql_real_escape_string()
$query = sprintf(“SELECT firstname, lastname, address, age FROM friends
WHERE firstname=`%s` AND lastname=`%s`”,
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));
// 執行查詢
$result = mysql_query($query);
// 檢查結果
// 下面顯示了實際傳送給 MySQL 的查詢,以及出現的錯誤。這對除錯很有幫助。
if (!$result) {
$message = `Invalid query: ` . mysql_error() . ”
“;
$message .= `Whole query: ` . $query;
die($message);
}
// 結果的使用
// 嘗試 print $result 並不會取出結果資源中的資訊
// 所以必須至少使用其中一個 mysql 結果函式
// 參見 mysql_result(), mysql_fetch_array(), mysql_fetch_row() 等。
while ($row = mysql_fetch_assoc($result)) {
echo $row[`firstname`];
echo $row[`lastname`];
echo $row[`address`];
echo $row[`age`];
}
// 釋放關聯結果集的資源
// 在指令碼結束的時候會自動進行
mysql_free_result($result);
?>
- mysql_real_escape_string — 轉義 SQL 語句中使用的字串中的特殊字元,並考慮到連線的當前字符集
$item = “Zak`s and Derick`s Laptop”;
$escaped_item = mysql_real_escape_string($item);
printf (“Escaped string: %s
“, $escaped_item);
?>
Escaped string: Zak`s and Derick`s Laptop
- mysql_result — 取得結果資料
mysql_result() 返回 MySQL 結果集中一個單元的內容。欄位引數可以是欄位的偏移量或者欄位名,或者是欄位表點欄位名(tablename.fieldname)。如果給列起了別名(`select foo as bar from…`),則用別名替代列名。
當作用於很大的結果集時,應該考慮使用能夠取得整行的函式(在下邊指出)。這些函式在一次函式呼叫中返回了多個單元的內容,比 mysql_result() 快得多。此外注意在欄位引數中指定數字偏移量比指定欄位名或者 tablename.fieldname 要快得多。
呼叫 mysql_result() 不能和其它處理結果集的函式混合呼叫。
<?php
$link = mysql_connect(“localhost”, “mysql_user”, “mysql_password”)
or die(“Could not connect: ” . mysql_error());
$result = mysql_query(“SELECT name FROM work.employee”)
or die(“Could not query: . mysql_error());
echo mysql_result($result,2); // outputs third employee`s name
mysql_close($link);
?>
- mysql_select_db — 選擇 MySQL 資料庫
成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
mysql_select_db() 設定與指定的連線識別符號所關聯的伺服器上的當前啟用資料庫。如果沒有指定連線識別符號,則使用上一個開啟的連線。如果沒有開啟的連線,本函式將無引數呼叫 mysql_connect() 來嘗試開啟一個並使用之。
每個其後的 mysql_query() 呼叫都會作用於活動資料庫。
<?php
$lnk = mysql_connect(`localhost`, `mysql_user`, `mysql_password`)
or die (`Not connected : ` . mysql_error());
// make foo the current db
mysql_select_db(`foo`, $lnk) or die (`Can`t use foo : ` . mysql_error());
?>
- mysql_set_charset — 設定客戶端的字符集
charset
一個有效的字符集名稱。
link_identifier
MySQL 連線。如不指定連線標識,則使用由 mysql_connect() 最近開啟的連線。如果沒有找到該連線,會嘗試不帶引數呼叫 mysql_connect() 來建立。如沒有找到連線或無法建立連線,則會生成 E_WARNING
級別的錯誤。
返回值:成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
- mysql_stat — 取得當前系統狀態
$link = mysql_connect(`localhost`, “mysql_user”, “mysql_password”);
$status = explode(` `, mysql_stat($link));
print_r($status);
?>
Array ( [0] => Uptime: 5380 [1] => Threads: 2 [2] => Questions: 1321299 [3] => Slow queries: 0 [4] => Opens: 26 [5] => Flush tables: 1 [6] => Open tables: 17 [7] => Queries per second avg: 245.595 )
- mysql_tablename — 取得表名
mysql_connect(“localhost”, “mysql_user”, “mysql_password”);
$result = mysql_list_tables(“mydb”);
for ($i = 0; $i < mysql_num_rows($result); $i++)
printf (“Table: %s
“, mysql_tablename($result, $i));
mysql_free_result($result);
?>
- mysql_thread_id — 返回當前執行緒的 ID
$link = mysql_connect(`localhost`, `mysql_user`, `mysql_password`);
$thread_id = mysql_thread_id($link);
if ($thread_id){
printf (“current thread id is %d
“, $thread_id);
}
?>
current thread id is 73
- mysql_unbuffered_query — 向 MySQL 傳送一條 SQL 查詢,並不獲取和快取結果的行
query
,但不像 mysql_query() 那樣自動獲取並快取結果集。一方面,這在處理很大的結果集時會節省可觀的記憶體。另一方面,可以在獲取第一行後立即對結果集進行操作,而不用等到整個 SQL 語句都執行完畢。當使用多個資料庫連線時,必須指定可選引數 link_identifier
。- abs — 絕對值
$abs = abs(-4.2); // $abs = 4.2; (double/float)
$abs2 = abs(5); // $abs2 = 5; (integer)
$abs3 = abs(-5); // $abs3 = 5; (integer)
?>
- acos — 反餘弦
- acosh — 反雙曲餘弦
- asin — 反正弦
- asinh — 反雙曲正弦
- atan2 — 兩個引數的反正切
- atan — 反正切
- atanh — 反雙曲正切
- base_convert — 在任意進位制之間轉換數字
$hexadecimal = `A37334`;
echo base_convert($hexadecimal, 16, 2); //101000110111001100110100
echo ceil(4.3); // 5
echo ceil(9.999); // 10
echo ceil(-3.14); // -3
?>
- cos — 餘弦
echo cos(M_PI); // -1
?>
echo decbin(12) . ”
“; //1100
echo decbin(26); //11010
?>
- dechex — 十進位制轉換為十六進位制
echo dechex(10) . ”
“; //a
echo dechex(47); //2f
?>
- decoct — 十進位制轉換為八進位制
echo decoct(15) . ”
“; //17
echo decoct(264); //410
?>
- deg2rad — 將角度轉換為弧度
echo deg2rad(45); // 0.785398163397
var_dump(deg2rad(45) === M_PI_4); // bool(true)
?>
- exp — 計算 e 的指數
echo exp(12) . ”
“; //1.6275E+005
echo floor(4.3); // 4
echo floor(9.999); // 9
echo floor(-3.14); // -4
?>
- fmod — 返回除法的浮點數餘數
$x = 5.7;
$y = 1.3;
$r = fmod($x, $y);
// $r equals 0.5, because 4 * 1.3 + 0.5 = 5.7
?>
- getrandmax — 顯示隨機數最大的可能值
- hexdec — 十六進位制轉換為十進位制
- hypot — 計算一直角三角形的斜邊長度
- intdiv — Integer division
- is_finite — 判斷是否為有限值
- is_infinite — 判斷是否為無限值
- is_nan — 判斷是否為合法數值
// Invalid calculation, will return a
// NaN value
$nan = acos(8);
var_dump($nan, is_nan($nan));
?>
float(NAN) bool(true)
- lcg_value — 組合線性同餘發生器
- log10 — 以 10 為底的對數
- log1p — 返回 log(1 + number),甚至當 number 的值接近零也能計算出準確結果
- log — 自然對數
- max — 找出最大值
echo max(1, 3, 5, 6, 7); // 7
echo max(array(2, 4, 5)); // 5
// When `hello` is cast as integer it will be 0. Both the parameters are equally
// long, so the order they are given in determines the result
echo max(0, `hello`); // 0
echo max(`hello`, 0); // hello
echo max(`42`, 3); // `42`
// Here 0 > -1, so `hello` is the return value.
echo max(-1, `hello`); // hello
// With multiple arrays of different lengths, max returns the longest
$val = max(array(2, 2, 2), array(1, 1, 1, 1)); // array(1, 1, 1, 1)
// 對多個陣列,max 從左向右比較。
// 因此在本例中:2 == 2,但 4 < 5
$val = max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7)
// 如果同時給出陣列和非陣列作為引數,則總是將陣列視為
// 最大值返回
$val = max(`string`, array(2, 5, 7), 42); // array(2, 5, 7)
?>
- min — 找出最小值
echo min(2, 3, 1, 6, 7); // 1
echo min(array(2, 4, 5)); // 2
echo min(0, `hello`); // 0
echo min(`hello`, 0); // hello
echo min(`hello`, -1); // -1
// 對多個陣列,min 從左向右比較。
// 因此在本例中:2 == 2,但 4 < 5
$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8)
// 如果同時給出陣列和非陣列作為引數,則不可能返回陣列,因為
// 陣列被視為最大的
$val = min(`string`, array(2, 5, 7), 42); // string
?>
- mt_getrandmax — 顯示隨機數的最大可能值
function randomFloat($min = 0, $max = 1) {
return $min + mt_rand() / mt_getrandmax() * ($max – $min);
}
var_dump(randomFloat());
var_dump(randomFloat(2, 20));
?>
float(0.91601131712832) float(16.511210331931)
- mt_rand — 生成更好的隨機數
min
和 max
,mt_rand() 返回 0 到 mt_getrandmax() 之間的偽隨機數。例如想要 5 到 15(包括 5 和 15)之間的隨機數,用 mt_rand(5, 15)。引數:min
可選的、返回的最小值(預設:0)
max
可選的、返回的最大值(預設:mt_getrandmax())
返回值:返回 min
(或者 0) 到 max
(或者是到 mt_getrandmax() ,包含這個值)之間的隨機整數。
<?php
echo mt_rand() . "
";
echo mt_rand() . "
";
echo mt_rand(5, 15);
?>
以上例程的輸出類似於:
1604716014 1478613278 6
- mt_srand — 播下一個更好的隨機數發生器種子
seed
來給隨機數發生器播種。 沒有設定 seed
引數時,會被設為隨時數。引數:seed
可選的種子值
返回值:沒有返回值
// seed with microseconds
function make_seed(){
list($usec, $sec) = explode(` `, microtime());
return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();
?>
- octdec — 八進位制轉換為十進位制
echo octdec(`77`) . ”
“; //63
echo octdec(decoct(45)); //45
?>
- pi — 得到圓周率值
echo pi(); // 3.1415926535898
echo M_PI; // 3.1415926535898
?>
echo rad2deg(M_PI_4); // 45
?>
- rand — 產生一個隨機整數
echo rand() . ”
“; //7771
echo rand() . ”
“; //22264
echo rand(5, 15); //11
?>
- round — 對浮點數進行四捨五入
echo round(3.4); // 3
echo round(3.5); // 4
echo round(3.6); // 4
echo round(3.6, 0); // 4
echo round(1.95583, 2); // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2); // 5.05
echo round(5.055, 2); // 5.06
?>
echo round(9.5, 0, PHP_ROUND_HALF_UP); // 10
echo round(9.5, 0, PHP_ROUND_HALF_DOWN); // 9
echo round(9.5, 0, PHP_ROUND_HALF_EVEN); // 10
echo round(9.5, 0, PHP_ROUND_HALF_ODD); // 9
echo round(8.5, 0, PHP_ROUND_HALF_UP); // 9
echo round(8.5, 0, PHP_ROUND_HALF_DOWN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_EVEN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_ODD); // 9
?>
- sin — 正弦
// 返回值的精度由配置中的 precision 指示確定
echo sin(deg2rad(60)); // 0.866025403 …
echo sin(60); // -0.304810621 …
?>
// Precision depends on your precision directive
echo sqrt(9); // 3
echo sqrt(10); // 3.16227766 …
?>
- srand — 播下隨機數發生器種子
// seed with microseconds
function make_seed(){
list($usec, $sec) = explode(` `, microtime());
return (float) $sec + ((float) $usec * 100000);
}
srand(make_seed());
$randval = rand();
?>
- tan — 正切
echo tan(M_PI_4); // 1
?>
- tanh — 雙曲正切
- checkdate — 驗證一個格里高裡日期
month
month 的值是從 1 到 12。
day
Day
的值在給定的 month
所應該具有的天數範圍之內,閏年已經考慮進去了。
year
year 的值是從 1 到 32767。
返回值:如果給出的日期有效則返回 TRUE
,否則返回 FALSE
。
var_dump(checkdate(12, 31, 2000)); //bool(true)
var_dump(checkdate(2, 29, 2001)); //bool(false)
?>
- date_add — 別名 DateTime::add
- date_create_from_format — 別名 DateTime::createFromFormat
- date_create_immutable_from_format — 別名 DateTimeImmutable::createFromFormat
- date_create_immutable — 別名 DateTimeImmutable::__construct
- date_create — 別名 DateTime::__construct
- date_date_set — 別名 DateTime::setDate
- date_default_timezone_get — 取得一個指令碼中所有日期時間函式所使用的預設時區
本函式返回預設時區,使用如下“假定”的順序:
-
用 date_default_timezone_set() 函式設定的時區(如果設定了的話)
-
僅僅在 PHP 5.4.0 之前: TZ 環境變數(如果非空)
-
date.timezone 配置選項(如果設定了的話)
-
僅僅在 PHP 5.4.0 之前: 查詢作業系統主機 (如果作業系統支援並允許)。
-
如果以上選擇都不成功,date_default_timezone_get() 會則返回 UTC 的預設時區。
date_default_timezone_set(`Europe/London`);
if (date_default_timezone_get()) {
echo `date_default_timezone_set: ` . date_default_timezone_get() . `<br />`;
}
if (ini_get(`date.timezone`)) {
echo `date.timezone: ` . ini_get(`date.timezone`);
}
?>
date_default_timezone_set: Europe/London date.timezone: Europe/London
獲取一個時區的簡寫:
date_default_timezone_set(`America/Los_Angeles`);
echo date_default_timezone_get() . ` => ` . date(`e`) . ` => ` . date(`T`);
?>
America/Los_Angeles => America/Los_Angeles => PST
- date_default_timezone_set — 設定用於一個指令碼中所有日期時間函式的預設時區
timezone_identifier
時區識別符號, UTC 或 Europe/Lisbon。合法識別符號列表見所支援的時區列表。
返回值:如果 timezone_identifier
引數無效則返回 FALSE
,否則返回 TRUE
。
date_default_timezone_set(`America/Los_Angeles`);
$script_tz = date_default_timezone_get();
if (strcmp($script_tz, ini_get(`date.timezone`))){
echo `Script timezone differs from ini-set timezone.`;
} else {
echo `Script timezone and ini-set timezone match.`;
}
?>
- date_diff — 別名 DateTime::diff
- date_format — 別名 DateTime::format
- date_get_last_errors — 別名 DateTime::getLastErrors
- date_interval_create_from_date_string — 別名 DateInterval::createFromDateString
- date_interval_format — 別名 DateInterval::format
- date_isodate_set — 別名 DateTime::setISODate
- date_modify — 別名 DateTime::modify
- date_offset_get — 別名 DateTime::getOffset
- date_parse_from_format — Get info about given date formatted according to the specified format
format
Format accepted by DateTime::createFromFormat().
date
String representing the date.
<?php
$date = “6.1.2009 13:00+01:00”;
print_r(date_parse_from_format(“j.n.Y H:iP”, $date));
?>
- date_parse — Returns associative array with detailed info about given date
date
Date in format accepted by strtotime().
返回值:Returns array with information about the parsed date on success 或者在失敗時返回 FALSE
.
print_r(date_parse(“2006-12-12 10:00:00.5”));
?>
Array ( [year] => 2006 [month] => 12 [day] => 12 [hour] => 10 [minute] => 0 [second] => 0 [fraction] => 0.5 [warning_count] => 0 [warnings] => Array() [error_count] => 0 [errors] => Array() [is_localtime] => )
- date_sub — 別名 DateTime::sub
- date_sun_info — Returns an array with information about sunset/sunrise and twilight begin/end
time
Timestamp.latitude
Latitude in degrees.longitude
Longitude in degrees.返回值:Returns array on success 或者在失敗時返回 FALSE
.$sun_info = date_sun_info(strtotime(“2006-12-12”), 31.7667, 35.2333);
foreach ($sun_info as $key => $val) {
echo “$key: ” . date(“H:i:s”, $val) . ”
“;
}
?>
sunrise: 05:52:11 sunset: 15:41:21 transit: 10:46:46 civil_twilight_begin: 05:24:08 civil_twilight_end: 16:09:24 nautical_twilight_begin: 04:52:25 nautical_twilight_end: 16:41:06 astronomical_twilight_begin: 04:21:32 astronomical_twilight_end: 17:12:00
- date_sunrise — 返回給定的日期與地點的日出時間
timestamp
指定)與地點的日出時間。引數:timestamp
取 timestamp
所在日期的日出時間。format
format
常量常量
說明
取值舉例
SUNFUNCS_RET_STRING
以 string 格式返回結果
16:46
SUNFUNCS_RET_DOUBLE
以 float 格式返回結果
16.78243132
SUNFUNCS_RET_TIMESTAMP
以 integer 格式(時間戳)返回結果
1095034606
latitude
預設是指北緯。因此如果要指定南緯,必須傳遞一個負值。 參見 date.default_latitude。longitude
預設是指東經。因此如果要指定西經,必須傳遞一個負值。 參見 date.default_longitude。zenith
預設: date.sunrise_zenith。gmtoffset
單位是小時。返回值:按指定格式 format
返回的日出時間, 或者在失敗時返回 FALSE
。<?php
/* 計算葡萄牙里斯本的日出時間
Latitude: 北緯 38.4 度
Longitude: 西經 9 度
Zenith ~= 90
offset: +1 GMT
*/
echo date(“D M d Y”). `, sunrise time : ` .date_sunrise(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);
?>
Mon Dec 20 2004, sunrise time : 08:54
- date_sunset — 返回給定的日期與地點的日落時間
timestamp
指定)與地點的日落時間。引數:timestamp
返回給定的日期(以 timestamp
指定)的日落時間。format
format
常量常量
說明
取值舉例
SUNFUNCS_RET_STRING
以 string 格式返回結果
16:46
SUNFUNCS_RET_DOUBLE
以 float 格式返回結果
16.78243132
SUNFUNCS_RET_TIMESTAMP
以 integer 格式(時間戳)返回結果
1095034606
latitude
預設是指北緯。因此如果要指定南緯,必須傳遞一個負值。參見: date.default_latitude。longitude
預設是指東經。因此如果要指定西經,必須傳遞一個負值。參見: date.default_longitudezenith
預設: date.sunset_zenith。gmtoffset
單位是小時。返回值:用指定的格式 format
返回日落時間, 或者在失敗時返回 FALSE
。<?php
/* calculate the sunset time for Lisbon, Portugal
Latitude: 38.4 North
Longitude: 9 West
Zenith ~= 90
offset: +1 GMT
*/
echo date(“D M d Y”). `, sunset time : ` .date_sunset(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);
?>
Mon Dec 20 2004, sunset time : 18:13
- date_time_set — 別名 DateTime::setTime
- date_timestamp_get — 別名 DateTime::getTimestamp
- date_timestamp_set — 別名 DateTime::setTimestamp
- date_timezone_get — 別名 DateTime::getTimezone
- date_timezone_set — 別名 DateTime::setTimezone
- date — 格式化一個本地時間/日期
// 設定預設時區。PHP 5.1 之後版本可用
date_default_timezone_set(`UTC`);
// 輸出類似: Monday
echo date(“l”);
// 輸出類似:Monday 8th of August 2005 03:12:46 PM
echo date(`l jS of F Y h:i:s A`);
// 輸出:July 1, 2000 is on a Saturday
echo “July 1, 2000 is on a ” . date(“l”, mktime(0, 0, 0, 7, 1, 2000));
/* 使用格式常量 */
// 輸出類似: Mon, 15 Aug 2005 15:12:46 UTC
echo date(DATE_RFC822);
// 輸出類似:2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>
// 輸出類似: Wednesday the 15th
echo date(`l he jS`);
?>
$tomorrow = mktime(0, 0, 0, date(“m”) , date(“d”)+1, date(“Y”));
$lastmonth = mktime(0, 0, 0, date(“m”)-1, date(“d”), date(“Y”));
$nextyear = mktime(0, 0, 0, date(“m”), date(“d”), date(“Y”)+1);
?>
// 假設今天是 2001 年 3 月 10 日下午 5 點 16 分 18 秒,
// 並且位於山區標準時間(MST)時區
$today = date(“F j, Y, g:i a”); // March 10, 2001, 5:16 pm
$today = date(“m.d.y”); // 03.10.01
$today = date(“j, n, Y”); // 10, 3, 2001
$today = date(“Ymd”); // 20010310
$today = date(`h-i-s, j-m-y, it is w Day`); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date(`i is he jS day.`); // it is the 10th day.
$today = date(“D M j G:i:s T Y”); // Sat Mar 10 17:16:18 MST 2001
$today = date(`H:m:s m is mo
h`); // 17:03:18 m is month
$today = date(“H:i:s”); // 17:16:18
?>
- getdate — 取得日期/時間資訊
timestamp
可選的 timestamp
引數是一個 integer 的 Unix 時間戳,如未指定,引數值預設為當前本地時間。也就是說,其值預設為 time() 的返回值。
返回值:返回一個根據 timestamp
得出的包含有日期資訊的關聯陣列 array。
$today = getdate();
print_r($today);
?>
Array ( [seconds] => 40 [minutes] => 58 [hours] => 21 [mday] => 17 [wday] => 2 [mon] => 6 [year] => 2003 [yday] => 167 [weekday] => Tuesday [month] => June [0] => 1055901520 )
- gettimeofday — 取得當前時間
陣列中的鍵為:
- “sec” – 自 Unix 紀元起的秒數
- “usec” – 微秒數
- “minuteswest” – 格林威治向西的分鐘數
- “dsttime” – 夏令時修正的型別
print_r(gettimeofday());
echo gettimeofday(true);
?>
Array ( [sec] => 1073504408 [usec] => 238215 [minuteswest] => 0 [dsttime] => 1 ) 1073504408.23910
- gmdate — 格式化一個 GMT/UTC 日期/時間
echo date(“M d Y H:i:s”, mktime (0,0,0,1,1,2000));
echo gmdate(“M d Y H:i:s”, mktime (0,0,0,1,1,2000));
?>
- gmmktime — 取得 GMT 日期的 UNIX 時間戳
和 mktime() 完全一樣,只除了返回值是格林威治標準時的時間戳。
引數總是表示 GMT 日期,因此 is_dst
對結果沒有影響。
和 mktime() 一樣,引數可以從右到左依次空著,空著的引數會被設為相應的當前 GMT 值。
- gmstrftime — 根據區域設定格式化 GMT/UTC 時間/日期
setlocale(LC_TIME, `en_US`);
echo strftime(“%b %d %Y %H:%M:%S”, mktime (20,0,0,12,31,98)).”
“;
echo gmstrftime(“%b %d %Y %H:%M:%S”, mktime (20,0,0,12,31,98)).”
“;
?>
- idate — 將本地時間日期格式化為整數
根據給定的格式字元對 timestamp
格式化並返回數字結果。timestamp
為可選項,預設值為本地當前時間,即time() 的值。
和 date() 不同,idate() 只接受一個字元作為 format
引數。
<?php
$timestamp = strtotime(`1st January 2004`); //1072915200
// 下面以兩位數字格式顯示年份,但是因為
// 以“0”打頭,因此只會顯示“4”
echo idate(`y`, $timestamp);
?>
- localtime — 取得本地時間
timestamp
可選的 timestamp
引數是一個 integer 的 Unix 時間戳,如未指定,引數值預設為當前本地時間。也就是說,其值預設為 time() 的返回值。
is_associative
如果設為 FALSE
或未提供則返回的是普通的數字索引陣列。如果該引數設為 TRUE
則 localtime() 函式返回包含有所有從 C 的 localtime 函式呼叫所返回的不同單元的關聯陣列。關聯陣列中不同的鍵名為:
- “tm_sec” – 秒數, 0 到 59
- “tm_min” – 分鐘數, 0 到 59
- “tm_hour” – 小時, 0 到 23
- “tm_mday” – 月份中的第幾日, 1 到 31
- “tm_mon” – 年份中的第幾個月, 0 (Jan) 到 11 (Dec)
- “tm_year” – 年份,從 1900 開始
- “tm_wday” – 星期中的第幾天, 0 (Sun) 到 6 (Sat)
- “tm_yday” – 一年中的第幾天, 0 到 365
- “tm_isdst” – 夏令時當前是否生效? 如果是生效的是正數, 0 代表未生效,負數代表未知。
$localtime = localtime();
$localtime_assoc = localtime(time(), true);
print_r($localtime);
print_r($localtime_assoc);
?>
- microtime — 返回當前 Unix 時間戳和微秒數
microtime() 當前 Unix 時間戳以及微秒數。本函式僅在支援 gettimeofday() 系統呼叫的作業系統下可用。
如果呼叫時不帶可選引數,本函式以 “msec sec” 的格式返回一個字串,其中 sec 是自 Unix 紀元(0:00:00 January 1, 1970 GMT)起到現在的秒數,msec 是微秒部分。字串的兩部分都是以秒為單位返回的。
如果給出了 get_as_float
引數並且其值等價於 TRUE
,microtime() 將返回一個浮點數。
用 microtime() 對指令碼的執行計時
/**
* Simple function to replicate PHP 5 behaviour
*/
function microtime_float(){
list($usec, $sec) = explode(” “, microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
// Sleep for a while
usleep(100);
$time_end = microtime_float();
$time = $time_end – $time_start;
echo “Did nothing in $time seconds
“;
?>
- mktime — 取得一個日期的 Unix 時間戳
echo date(“M-d-Y”, mktime(0, 0, 0, 12, 32, 1997));
echo date(“M-d-Y”, mktime(0, 0, 0, 13, 1, 1997));
echo date(“M-d-Y”, mktime(0, 0, 0, 1, 1, 1998));
echo date(“M-d-Y”, mktime(0, 0, 0, 1, 1, 98));
?>
$lastday = mktime(0, 0, 0, 3, 0, 2000);
echo strftime(“Last day in Feb 2000 is: %d”, $lastday);
$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo strftime(“Last day in Feb 2000 is: %d”, $lastday);
?>
- strftime — 根據區域設定格式化本地時間/日期
timestamp
或未給出 timestamp 是使用當前本地時間, 返回 format
格式化的字元。 月份、星期名和其他與語言相關的字串遵守 setlocale() 設定的當前區域設定。- strptime — 解析由 strftime 生成的日期/時間
strptime() 返回一個將 date
解析後的陣列,如果出錯返回 FALSE
。
月份和星期幾的名字以及其它與語種有關的字串對應於 setlocale()設定的當前區域(LC_TIME
)。引數:
date
(string)
被解析的字串(例如從 strftime() 返回的)
format
(string)
date
所使用的格式(例如同 strftime() 中所使用的相同)。
返回值:返回一個陣列 或者在失敗時返回 FALSE
鍵名 | 說明 |
---|---|
tm_sec | 當前分鐘內的秒數(0-61) |
tm_min | 當前小時內的分鐘數(0-59) |
tm_hour | 午夜起的小時數(0-23) |
tm_mday | 月份中的第幾天(1-31) |
tm_mon | 自一月起過了幾個月(0-11) |
tm_year | 自 1900 年起過了幾年 |
tm_wday | 自星期天起過了幾天(0-6) |
tm_yday | 本年自一月一日起過了多少天(0-365) |
unparsed |
date 中未能通過指定的 format 識別的部分 |
<?php
$format = `%d/%m/%Y %H:%M:%S`;
$strf = strftime($format);
echo "$strf
";
print_r(strptime($strf, $format));
?>
03/10/2004 15:54:19 Array ( [tm_sec] => 19 [tm_min] => 54 [tm_hour] => 15 [tm_mday] => 3 [tm_mon] => 9 [tm_year] => 104 [tm_wday] => 0 [tm_yday] => 276 [unparsed] => )
- strtotime — 將任何英文文字的日期時間描述解析為 Unix 時間戳
now
引數給出的時間,如果沒有提供此引數則用系統當前時間。引數time
日期/時間字串。正確格式的說明詳見 日期與時間格式。
now
用來計算返回值的時間戳。
返回值:成功則返回時間戳,否則返回 FALSE
。在 PHP 5.1.0 之前本函式在失敗時返回 -1。
echo strtotime(“now”), ”
“;
echo strtotime(“10 September 2000″), ”
“;
echo strtotime(“+1 day”), ”
“;
echo strtotime(“+1 week”), ”
“;
echo strtotime(“+1 week 2 days 4 hours 2 seconds”), ”
“;
echo strtotime(“next Thursday”), ”
“;
echo strtotime(“last Monday”), ”
“;
?>
$str = `Not Good`;
// previous to PHP 5.1.0 you would compare with -1, instead of false
if (($timestamp = strtotime($str)) === false) {
echo “The string ($str) is bogus”;
} else {
echo “$str == ” . date(`l dS of F Y h:i:s A`, $timestamp);
}
?>
- time — 返回當前的 Unix 時間戳
$nextWeek = time() + (7 * 24 * 60 * 60);
// 7 days; 24 hours; 60 mins; 60secs
echo `Now: `. date(`Y-m-d`) .”
“;
echo `Next Week: `. date(`Y-m-d`, $nextWeek) .”
“;
// or using strtotime():
echo `Next Week: `. date(`Y-m-d`, strtotime(`+1 week`)) .”
“;
?>
Now: 2005-03-30 Next Week: 2005-04-06 Next Week: 2005-04-06
- timezone_abbreviations_list — 別名 DateTimeZone::listAbbreviations
- timezone_identifiers_list — 別名 DateTimeZone::listIdentifiers
- timezone_location_get — 別名 DateTimeZone::getLocation
- timezone_name_from_abbr — Returns the timezone name from abbreviation
- timezone_name_get — 別名 DateTimeZone::getName
- timezone_offset_get — 別名 DateTimeZone::getOffset
- timezone_open — 別名 DateTimeZone::__construct
- timezone_transitions_get — 別名 DateTimeZone::getTransitions
- timezone_version_get — Gets the version of the timezonedb
echo timezone_version_get();
?>
相關文章
- PHP 函式庫 1 - 函式庫的分類PHP函式
- 漢化PHP的Password函式庫PHP函式
- PHP的GD庫函式大全PHP函式
- PHP Oracle 資料庫函式庫(轉)PHPOracle資料庫函式
- php函式PHP函式
- PHP 函式PHP函式
- php 函式PHP函式
- 類函式和物件函式 PHP函式物件PHP
- PHP 函式庫精講之類與物件PHP函式物件
- PHP的SPL擴充套件庫(四)函式PHP套件函式
- PHP 常用函式PHP函式
- PHP匿名函式PHP函式
- PHP常用函式PHP函式
- PHP函式大全PHP函式
- PHP字串函式PHP字串函式
- php函式案例PHP函式
- PHP extract() 函式PHP函式
- [php]unset函式PHP函式
- php’sfopen()函式PHP函式
- ord函式-php函式PHP
- php’sexplode()函式PHP函式
- PHP 每日一函式 — 字串函式 crypt ()PHP函式字串
- PHP 每日一函式 — 字串函式 chr ()PHP函式字串
- PHP 每日一函式 — 字串函式 addcslashes ()PHP函式字串
- PHP 每日一函式 — 字串函式 addslashes ()PHP函式字串
- PHP函式,引數,可變參函式.PHP函式
- PHP 匿名函式初探PHP函式
- php 函式簡介PHP函式
- PHP常用函式大全PHP函式
- php函式瑣記PHP函式
- PHP常用函式篇PHP函式
- php 可變函式PHP函式
- php 內建函式PHP函式
- PHP 時間函式PHP函式
- php函式總結PHP函式
- php-rename()函式PHP函式
- php遞迴函式PHP遞迴函式
- PHP的字串函式PHP字串函式