㈠ 怎樣使用Mysqli和PDO創建MySQL表
首頁 站長學院 資料庫 MySQL 怎樣使用MySQLi和PDO創建MySQL表? 怎樣使用MySQLi和PDO創建MySQL表? 發布日期:2015-09-15 17:27 來源: 標簽: MySQL資料庫 MySQL 創建數據表 PDO 一個數據表有一個唯一名稱,並有行和列組成。
㈡ 關於~~使用php的mysqli擴展庫操作資料庫 的問題
首先mysqli("
localhost
","root","1234");應該是個函數,不應該用new
關鍵字。
new
是來實例化對象的。
$link
=
mysqli_connect(
'localhost',
/*
The
host
to
connect
to
連接MySQL地址
*/
'user',
/*
The
user
to
connect
as
連接MySQL用戶名
*/
'password',
/*
The
password
to
use
連接MySQL密碼
*/
'world');
這個才是連接語句。
㈢ PHP資料庫操作之基於Mysqli的資料庫操作類庫
此類庫簡單、易用,便於你自己修改和對功能的改善,能解決大部分
PHP
項目中執行的
SQL
操作。
初步工作
首先,請大家下載這個類庫
M.class.php 再下載一個
Mysqli
連接資料庫的類庫
MysqliDb.class.php(打包下載地址)
新建一個
includes
的文件夾,將下載下來的兩個
class
文件,放進去。
然後,請你在項目下創建一個
test.php
文件。註:UTF-8
文件格式
請先根據你機器的情況,填充以下代碼,用於連接資料庫:
復制代碼
代碼如下:
header('Content-Type:text/html;Charset=utf-8');
define('ROOT_PATH',
dirname(__FILE__));
define('DB_HOST',
'localhost');
//資料庫伺服器地址
define('DB_USER',
'root');
//資料庫用戶名
define('DB_PWD',
'×××');//資料庫密碼
define('DB_NAME',
'×××');
//資料庫名稱
define('DB_PORT',
'3306');
//資料庫埠
function
__autoload($className)
{
require_once
ROOT_PATH
.
'/includes/'.
ucfirst($className)
.'.class.php';
//自動載入
class
文件
}
好了,上面的這些操作都是初步工作,下面正式進入類庫的講解。
類庫講解
首先,我們得實例化
M.class.php,實例化很簡單:
復制代碼
代碼如下:
$m
=
new
M();
//這步操作代表
M.class.php
中的所有功能都封裝在了變數
$m
中
註:
1、M類庫中的方法參數說明,請到
M.class.php
文件中看詳細的注釋,這里不再進行敘述。建議在學習的時候,對照著看下文件中的參數即注釋。
2、講解代碼中用到的資料庫結構為:
復制代碼
代碼如下:
CREATE
TABLE
`user`
(
`id`
int(8)
unsigned
NOT
NULL
auto_increment,
`name`
varchar(50)
default
NULL,
`email`
varchar(100)
default
NULL,
`age`
smallint(3)
default
NULL,
`class_id`
int(8)
default
NULL,
`commit_time`
int(10)
default
NULL,
PRIMARY
KEY
(`id`),
KEY
`name`
(`name`)
)
ENGINE=MyISAM
DEFAULT
CHARSET=utf8
復制代碼
代碼如下:
CREATE
TABLE
`class`
(
`class_id`
int(8)
NOT
NULL
auto_increment,
`class_name`
varchar(100)
default
NULL,
PRIMARY
KEY
(`class_id`)
)
ENGINE=InnoDB
DEFAULT
CHARSET=utf8
並添加一條測試數據。
3、M類庫中,大部分方法都分兩中類型,即:SQL方法;拼接方法,具體在實例中可以看出
4、以下稱述中的
M
為
M.class.php
文件
方法1、Insert()
添加數據
Insert
方法的全部使用案例如下:
復制代碼
代碼如下:
$m->Insert("user",
null,
array('焦焦',
'[email protected]',
'23',
time()));
//
拼接方法:往`user`表中添加一條數據,返回值為資料庫影響的行數
$m->Insert("user",
null,
array('焦焦',
'[email protected]',
'23',
time()),
true);
//
功能同上,返回
last_insert_id(插入的增長id)
$m->Insert("INSERT
INTO
`user`
(`name`,
`email`,
`age`,
`commit_time`)
VALUES
('張小花',
'[email protected]',
'22',
'".time()."')");
//SQL方法,返回值為資料庫影響的行數
$m->Insert("INSERT
INTO
`user`
(`name`,
`email`,
`age`,
`commit_time`)
VALUES
('張小花',
'[email protected]',
'22',
'".time()."')",
true);
//
同上,返回
last_insert_id
註:Insert
方法中的第二個參數若為null,可自動獲得插入表除
auto_increment
欄位之外的所有欄位,詳情請看M源文件;若要返回值為最後插入的
ID,那麼請設置
Insert
方法的最後一個參數為
true(默認是false);
方法2、Update()
修改數據
update
方法的全部使用案例如下:
復制代碼
代碼如下:
$m->Update("user",
array('name'=>'李茹茹',
'age'=>24),
"id=1");
//拼接方法,修改id為1的數據的名稱為「李茹茹」;年齡為「24」,其方法的返回值為受影響的行數
$m->Update("UPDATE
`user`
SET
`name`='李茹茹',
`age`=24
WHERE
id
=
1");
//SQL
用法,功能同上
方法3、Del()
刪除數據
Del
方法的全部使用案例如下:
復制代碼
代碼如下:
$m->Del('user',
'id=3');
//拼接方法:刪除`user`表中
id
為3的數據,返回受影響的行數
$m->Del("DELETE
FROM
`user`
WHERE
id=4");
//SQL方法:刪除`user`表中
id
為4的數據,返回受影響的行數
$m->Del("DELETE
FROM
`user`
WHERE
id
in
(10,
11,
12)");
//SQL方法:刪除多條數據,刪除`user`表中
id
為
10、11、12
的數據,返回受影響的行數
方法4、Total()
獲取記錄數,返回值都為int
Del
方法的全部使用案例如下:
復制代碼
代碼如下:
$m->Total('user');
//拼接方法:返回
`user`表中的記錄數,無條件
$m->Total('user',
'id>1');
//拼接方法:返回
`user`表中
id
大於1的記錄數,有條件
$m->Total("SELECT
COUNT(*)
AS
total
FROM
`user`");
//SQL方法,註:使用SQL方法,語句中必須使用
"AS
total",否則會報錯
方法5、IsExists()
檢查數據是否存在,返回值為boolean
復制代碼
代碼如下:
$m->IsExists('user',
"`name`='焦焦'");
//拼接方法:返回`user`表中是否存在`name`為「焦焦」的數據,返回true,若不存在,返回false
方法6、InsertId()
獲取表下一個添加的自動增長id,注意,這里不進行添加操作,只是獲取下一個增長id
復制代碼
代碼如下:
echo
$m->InsertId('user');
//獲取`user`
表下一個添加的自動增長id
方法7、GetRow()
返回單條數據,返回值為一維數組
GetRow
方法的全部使用案例如下:
復制代碼
代碼如下:
$data
=
$m->GetRow("SELECT
`name`,email
FROM
`user`
WHERE
id=1");
//SQL方法,返回一維數組,例如:Array
(
[name]
=>
焦焦
[email]
=>
[email protected]
)
$data
=
$m->GetRow("SELECT
u.`name`,
u.email,
c.class_name
FROM
`user`
u,
`class`
c
WHERE
u.class_id=c.class_id
AND
u.id=1");
//SQL方法,多表查詢
$data
=
$m->GetRow('user',
'`name`,email',
"id=1");
//拼接方法
$data
=
$m->GetRow('user
as
u,`class`
c',
'u.`name`,u.email,c.class_name',
"u.id=1
AND
u.class_id=c.class_id");
//拼接方法,多表查詢
$data
=
$m->GetRow("SELECT
`name`,email
FROM
`user`");
//如果沒有指定條件應該是顯示全部信息,但是在此方法中將默認顯示第一條(不推薦這么使用!!!)
$data
是查詢出來的一維數組。
方法8、GetOne()
返回單個數據
GetOne
方法的全部使用案例如下:
復制代碼
代碼如下:
$name
=
$m->GetOne("SELECT
`name`
FROM
`user`
WHERE
id=1");
//SQL方法,返回一個字元串,例如:焦焦
$name
=
$m->GetOne("user",
"name",
"id=1");
//拼接方法,返回一個字元串,例如:焦焦
方法9、FetchAll()
返回所有記錄
復制代碼
代碼如下:
$data
=
$m->FetchAll("user");
//返回`user`表中的所有記錄,以二維數組的形式
$data
=
$m->FetchAll("SELECT
*
FROM
`user`");
//SQL
方法,功能和返回值同上
$data
=
$m->FetchAll("user",
"name,email",
"id>1",
'id
DESC',
'2');
//返回兩條id>1的數據,只顯示name,email,並且以id
為倒序排序。註:請注意該方法的最後一個參數也可以為'0,2',目的是為分頁准備的,如果第一頁為'0,2'的話,那麼第二頁就是'2,2'
//該方法也支持聯表查詢和多表查詢,下面以聯表查詢為例
$data
=
$m->FetchAll("`user`
as
u
LEFT
JOIN
`class`
as
c
ON
u.class_id=c.class_id",
"u.`name`,u.email,
c.class_name",
"u.id=1");
//注意:該拼接方法中,ON
添加的位置
註:對於該
FetchAll
方法,後續我會寫一篇使用該方法進行完美分頁的文章!!請關注。
方法10、MultiQuery()
執行多條SQL語句
復制代碼
代碼如下:
$sql
=
"INSERT
INTO
user
(`name`,email,
age,
class_id,
commit_time)
VALUES
('賈花花',
'[email protected]',
'22',
'1',
'".time()."')";
//添加一個名叫「賈花花」的學生信息
$sql
.=
";DELETE
FROM
`user`
WHERE
`name`='焦焦'";
//刪除一條名叫「焦焦」的學生信息
//解釋:$sql
是多條
SQL
以英文;(分號)拼接起來的
$data
=
$m->MultiQuery($sql);
//返回為true,代表執行成功;為false,代表執行失敗
類庫講解完畢
到此該類庫的全部功能就講解完畢,希望你能多看看M文件,了解其內部運行的機制。M
文件不會存在執行緩慢情況,請大家放心使用。
如果在使用過程中出現
SQL
拼接錯誤,類庫會報出友善的錯誤提示。
有問題請留言,歡迎大家的批評和建議,加油!學習好運。
㈣ PHP使用mysqli擴展連接MySQL資料庫
1.面向對象的使用方式
$db
=
new
mysqli('localhost',
'root',
'123456',
'dbname');
如果建立連接時未指定資料庫則選擇使用的資料庫,切換使用的資料庫
$db->select_db('dbname');
$query
=
"SELECT
*
FROM
user
WHERE
uid=4";
$result
=
$db->query($query);
$result_num
=
$result->num_rows;
$row
=
$result->fetch_assoc();
//返回一個關聯數組,可以通過$row['uid']的方式取得值
$row
=
$result->fetch_row();
//返回一個列舉數組,可以通過$row[0]的方式取得值
$row
=
$result->fetch_array();
//返回一個混合數組,可以通過$row['uid']和$row[0]兩種方式取得值
$row
=
$result->fetch_object();
//返回一個對象,可以通過$row->uid的方式取得值
$result->free();
//釋放結果集
$db->close();
//關閉一個資料庫連接,這不是必要的,因為腳本執行完畢時會自動關閉連接
當進行INSERT、UPDATE、DELETE操作時,使用$db->affected_rows查看影響行數
2.面向過程的使用方式
$db
=
mysqli_connect('localhost',
'root',
'123456',
'dbname');
如果建立連接時未指定資料庫則選擇使用的資料庫,切換使用的資料庫
mysqli_select_db($db,
'dbname');
查詢資料庫
$query
=
"SELECT
*
FROM
user
WHERE
uid=4";
$result
=
mysqli_query($db,
$query);
$result_num
=
mysqli_num_rows($result);
返回一行結果
$row
=
mysqli_fetch_assoc($result);
//返回一個關聯數組,可以通過$row['uid']的方式取得值
$row
=
mysqli_fetch_row($result);
//返回一個列舉數組,可以通過$row[0]的方式取得值
$row
=
mysqli_fetch_array($result);
//返回一個混合數組,可以通過$row['uid']和$row[0]兩種方式取得值
$row
=
mysqli_fetch_object($result);
//返回一個對象,可以通過$row->uid的方式取得值
斷開資料庫連接
mysqli_free_result($result);
//釋放結果集
mysqli_close($db);
//關閉一個資料庫連接,這不是必要的,因為腳本執行完畢時會自動關閉連接
當進行INSERT、UPDATE、DELETE操作時,使用mysqli_affected_rows()查看影響行數
㈤ php連接資料庫mysqli創建對象
你把連接資料庫的一些屬性封裝到一個類裡面,在實例化這個類,就是創建了這個類的對象
㈥ 在PHP的mysqli擴展中,連接資料庫的函數是什麼
mysqli_connect,手冊上的例子如下圖:
㈦ PHP mysqli 能連接上navicat for mysql 創建的資料庫和表嗎
mysqli 連接的是集成包或者單獨安裝的MySQL資料庫, 而 Navicat for mysql 只不過是MySQL的圖形可視化界面,他們之間的連接沒有什麼關系, 你用Navicat for MySQL 創建的資料庫和表 就像你在cmd或者phpmyadmin裡面創建的是一樣的,是可以連接和訪問的
㈧ 用mysqli擴展庫操作mysql資料庫為什麼反饋回來的中文全部是「」
這是編碼問題。
注意以下三個地方的編碼統一,可以確保中文不亂碼:
1
、資料庫設計(創建)時指定的中文編碼;
2、PHP文件的編碼;
3、MYSQL連接以後對連接設置的編碼,一般用下面的語句設定:
mysql_query("set
names
utf-8");
㈨ php中使用mysqli創建資料庫的時候怎麼指定字元集和排序規則
字元集很簡單,但是數據的排序需要通過SQL語句來協助完成,ORDER BY 語句,代碼如下:
//假設你已經成功連接了資料庫($mysqli變數假設為連接的資源句柄)
//通過對象方式設置字元編碼
$mysqli->set_charset('utf8');
//通過函數方式設置字元編碼
mysqli_set_charset($mysqli,'utf8');
//那麼接下來是數據排序的話,需要編寫一條SQL查詢語句(DESC倒序排列|ASC正序排列)
$sql="SELECT`欄位`FROM`表名`WHERETRUEORDERBY`欄位`DESC;";
如果還有什麼問題,歡迎追問~
㈩ mysql面向對象中$conn->query()是什麼意思
執行$sql,
$sql = "CREATE DATABASE my_db"; 就是創建資料庫,
(0是false,1是true),也可以 === 1,true和1都一樣
如果為1,則創建成功,否則失敗
(10)mysqli創建資料庫擴展閱讀:
面向對象資料庫中的類為適應需求變化而隨時間變化稱為模式演進,包括創建新類、刪除舊類、修改類屬性和操作等。模式演進必須保持模式一致性(模式自身內部不能出現矛盾),這通過模式一致性約束來描述。
模式一致性約束可分為唯一性約束(同一模式中名字唯一)、存在性約束(顯示引用的成分須存在)和子類型約束(子類和父類的聯系不可有環,不能有從多繼承帶來的任何沖突等)等,滿足所有這些一致性約束的模式稱為一致模式。模式演化歷來是面向對象資料庫研究的重點與難點。