果文章出現錯誤,希望各位包涵、指出。
言歸正傳,對於PHP來講,它是默認支持MYSQL的,也就是說我們不必再去手動設置ODBC來使用MYSQL了,我們所需要做的設置就是在php.ini中引入MYSQL插件。首先找到你的php.ini,編輯它,將extension = php_mysql.dll前的分號(“;”)去掉即可。這樣,我們的php就可以使用MYSQL了。
接下來我們連接mysql,mysql_connect(servername:port,username,password)就是用於連接mysql的函數,其中servername:port參數就是數據庫地址以及數據庫端口(默認情況下port參數為3306);username即是登陸數據庫所使用的用戶名,password則是對應用戶的密碼。由於我的數據庫就在本機上所以連接時我使用以下語句。
連接代碼
$con = mysql_connect("localhost","root",""); //$con可理解為連接號
當然我們不能讓mysql一直處於連接狀態,對於小型應用來說或許這不算問題,但對於大型web應用來講這是很浪費資源的,所以用完數據庫連接之後我們要關掉它。這個任務我們交給mysql_close(連接號)來完成。
開啟和關閉數據庫連接
弄明白了如何連接和斷開數據庫,接下來就是在mysql中創建數據庫,這聽起來很拗口,因為同一台mysql服務器中可以允許多個數據庫的存在。這裡我們有兩種方法來建立數據庫,法一使用mysql_create_db()函數,但不建議大家使用這種方法。
創建數據庫
$con = mysql_connect("localhost","root","");
mysql_create_db("guestbook",$con);
mysql_close($con);
法二,我們直接采用mysql_query()函數來執行sql語句。Create DATABASE 就是用於創建數據庫的sql語句,例如Create DATABASE test,就是創建一個名為test的數據庫。
創建數據庫
代碼如下 復制代碼$con = mysql_connect("localhost","root","");
mysql_query("Create DATABASE guestbook",$con);
mysql_close($con);
建完數據庫,我們要向數據庫中添加數據表。同樣是采用mysql_query()函數來執行sql語句,但不同的是之前我們要使用mysql_select_db()函數來選擇我們操作的數據庫。
代碼如下 復制代碼
在數據庫中建立好表、字段等數據數據關系之後,就差實實在在的數據了。同上,使用mysql_query()函數執行添加數據的sql語句,Insert INTO 表名 (字段名_1,字段名_2,......,字段名_n) VALUES (數據_1,數據_2,......,數據_n)。
$con = mysql_connect("localhost","root","");
mysql_query("Create DATABASE guestbook",$con);
mysql_select_db("guestbook",$con);
mysql_query("Create TABLE users(username varchar(15),
password varchar(15))");
mysql_query("Insert INTO users (username,password) VALUES ('Ku_Andrew','123456')");
mysql_close($con);
現在,我們的數據庫中已經有了數據,接下來我們使用select語句來進去查詢。
代碼如下 復制代碼 $con = mysql_connect("localhost","root","");
這樣,通過while循環我們就可以把users表中所有的數據全部查詢出來,上面這樣做不好重復利了,下面我們可以做成數據庫連接類。
代碼如下 復制代碼<?php
//------------------------------------------------------------------------------------------
// ※Database() 構造函數,數據庫初始參數
// ※Select() 查詢
// ※GetRows() 返回查詢的記錄總數
// ※Insert() 插入記錄
// ※Update() 更新
// ※Delete() 刪除
// ※Halt() 中斷並顯示錯誤信息 111Cn.Net */
//------------------------------------------------------------------------------------------
define("DATABASETYPE", "1"); //定義數據庫類型:1為MySql;2為SQL Server;3為Oracle;4為Odbc
define("SERVER", "localhost"); //Host name or IP address of the database server
define("DATABASE", "dbName"); //要連接的數據庫名
define("USER", "tableName"); //用於連接數據庫的用戶名
define("PASSWORD", "paswd"); //用於連接數據庫的密碼
class Database {
var $dbLink; //連接句柄
var $result; //查詢句柄
var $insId; //Insert()成功返回AUTO_INCREMENT列的值
var $rows; //返回數據數組
var $numRows; //返回數據數目
var $dbHost, $dbUser, $userPassword, $database;
var $dbType = DATABASETYPE;
var $msgFlag = "yes"; //yes:show the Mysql message ; no: die by show "Halted."
function Database($dbHost = SERVER, $dbUser = USER, $userPassword = PASSWORD, $database = DATABASE) {
switch ($this->dbType) {
case 1:
$this->dbLink = @mysql_pconnect($dbHost, $dbUser, $userPassword); // or die("Can't Connect to Remote Host!");
@mysql_select_db($database, $this->dbLink); // or die ("Can't Connect to Remote Host!");
break;
case 2:
break;
}
return true;
}
/* SQL:Select() 返回為false無結果 */
function Select($table, $columns, $condition = 1) {
$sql = "select $columns from $table where $condition ";
$this->result = @mysql_query($sql, $this->dbLink);
unset($this->rows);
if ($this->result) {
$i = 0;
if (!($this->rows = array("$i" => @mysql_fetch_array($this->result))))
return false;
if (($this->numRows = @mysql_num_rows($this->result)) == 0)
return false;
while ($tempRows = @mysql_fetch_array($this->result)) {
array_push($this->rows, $tempRows);
}
} else {
$this->Halt($sql);
return false;
}
return true;
}
/* SQL:GetRows() 返回查詢的記錄總數 */
function GetRows($table, $condition = 1) {
$sql = "select count(1) as count from $table where $condition";
$this->result = @mysql_query($sql, $this->dbLink);
if ($this->result) {
$temp = @mysql_fetch_array($this->result);
$this->numRows = $temp[count];
} else {
$this->Halt($sql);
return false;
}
return $this->numRows;
}
/* SQL:Insert() */
function Insert($table, $columns, $values) {
$sql = "insert into $table ($columns) values ($values)";
$this->result = @mysql_query($sql, $this->dbLink);
if ($this->result)
$this->insId = @mysql_insert_id($this->dbLink);
else {
$this->Halt($sql);
return false;
}
return true;
}
/* SQL:Update() */
function Update($table, $setings, $condition) {
$sql = "update $table set $setings where $condition";
$this->result = @mysql_query($sql, $this->dbLink);
if ($this->result)
$this->numRows = @mysql_affected_rows($this->result);
else {
$this->Halt($sql);
return false;
}
return true;
}
/* SQL:Delete */
function Delete($table, $condition) {
$sql = "delete from $table where $condition";
$this->result = @mysql_query($sql, $this->dbLink);
if ($this->result)
$this->numRows = @mysql_affected_rows($this->result);
else {
$this->Halt($sql);
return false;
}
return true;
}
/* Halt():error message */
function Halt($msg) {
if ($this->msgFlag == "yes") {
printf("<b>Database Query Error:</b> %s<br>n", $msg);
printf("<b>MySql Error:</b> %s<br>n", mysql_error());
}else
echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=../include/error.htm'>"; //自定一個出錯提示文件
return false;
}
}
switch ($db->dbType) {
case 1:
@mysql_close();
break;
case 2:
break;
}
$db = new Database();
?>