本文章來給各位php入門者詳細關於php連接數據庫的實例代碼,這裡主要講到了入門級的mysql連接代碼到高級的封裝數據庫連接類,希望此文章對各位朋友所有幫助。
連接MySQL數據庫的兩種方法:
(1)利用PHP的數據庫函數連接
此方式是最常用的一種方式.
這裡主要用到四個數據庫函數:
mysql_connect () 建立與MySQL服務器的連接。
mysql_select_db ():選擇MySQL服務器中的數據庫供以後的數據查詢操作query處理。
mysql_query ():送出query字符串以幫助MySQL做相關的處理或執行。
mysql_fetch_row ():用來將查詢結果result單行移到數組變量中。數組的索引是數字
索引,第一個索引值是0。
(2)通過ODBC連接
PHP通過ODBC連接MySQL數據庫主要用到四個函數:
Odbc_connect ():用來同ODBC數據源建立連接。
Odbc_do ():用來在建立連接之後執行數據庫查詢。
Odbc_result():用於取得當前記錄行中某個字段的值。
Odbc_fetch_row ():用來把查詢結果保存到數組,每個數組元素對應一條記錄。
我們先來看PHP的數據庫函數連接 方法實例
連接到一個 MySQL 數據庫
在您能夠訪問並處理數據庫中的數據之前,您必須創建到達數據庫的連接。
在 PHP 中,這個任務通過 mysql_connect() 函數完成。
語法
mysql_connect(servername,username,password);參數 描述
servername 可選。規定要連接的服務器。默認是 "localhost:3306"。
username 可選。規定登錄所使用的用戶名。默認值是擁有服務器進程的用戶的名稱。
password 可選。規定登錄所用的密碼。默認是 ""。
<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_close($con);
?>
面向對象mysqli(詳細教程)
代碼如下 復制代碼
<?php
$mysqli = new mysqli('localhost','root','','volunteer');
if (mysqli_connect_errno()){
die('Unable to connect!'). mysqli_connect_error();
}
?>
pdo連接mysql(詳細教程)
代碼如下 復制代碼
<?php
$db = new PDO('mysql:host=localhost;dbname=test', 'root', '');
try {
foreach ($db->query('select * from user') as $row){
print_r($row);
}
$db = null; //關閉數據庫
} catch (PDOException $e) {
echo $e->getMessage();
}
?>
然後我們還可以使用ODBC連接數據庫
<?php
require_once './adodb5/adodb.inc.php';
$conn = &ADONewConnection('mysql');
$conn->connect('localhost','root','','test');
$conn->Execute("set names utf8");
$res = $conn->Execute("select * from user");
if (!$res){
echo $conn->ErrorMsg();
}else{
var_dump($res);
}
?>
mysql數據連接類
代碼如下 復制代碼
<?php
//------------------------------------------------------------------------------------------
// ※Database() 構造函數,數據庫初始參數
// ※Select() 查詢
// ※GetRows() 返回查詢的記錄總數
// ※Insert() 插入記錄
// ※Update() 更新
// ※Delete() 刪除
// ※Halt() 中斷並顯示錯誤信息*/
//------------------------------------------------------------------------------------------
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();
?>
友情提示
如果出現連接mysql數據庫中文亂碼我們可以在連接數據庫查詢之前加上mysql_query("set names utf8"); 如果你是gbk就使用gbk編編碼了