本文目錄一覽:
php實現mysql封裝類示例
php封裝mysql類
複製代碼
代碼如下:
?php
class
Mysql
{
private
$host;
private
$user;
private
$pwd;
private
$dbName;
private
$charset;
private
$conn
=
null;
public
function
__construct()
{
$this-host
=
‘localhost’;
$this-user
=
‘root’;
$this-pwd
=
‘root’;
$this-dbName
=
‘test’;
$this-connect($this-host,$this-user,$this-pwd);
$this-switchDb($this-dbName);
$this-setChar($this-charset);
}
//負責鏈接
private
function
connect($h,$u,$p)
{
$conn
=
mysql_connect($h,$u,$p);
$this-conn
=
$conn;
}
//負責切換資料庫
public
function
switchDb($db)
{
$sql
=
‘use’
.
$db;
$this-query($sql);
}
//負責設置字符集
public
function
setChar($char)
{
$sql
=
‘set
names’
.
$char;
$this-query($sql);
}
//負責發送sql查詢
public
function
query($sql)
{
return
mysql_query($sql,$this-conn);
}
//負責獲取多行多列的select結果
public
function
getAll($sql)
{
$list
=
array();
$rs
=
$this-query($sql);
if
(!$rs)
{
return
false;
}
while
($row
=
mysql_fetch_assoc($rs))
{
$list[]
=
$row;
}
return
$list;
}
public
function
getRow($sql)
{
$rs
=
$this-query($sql);
if(!$rs)
{
return
false;
}
return
mysql_fetch_assoc($rs);
}
public
function
getOne($sql)
{
$rs
=
$this-query($sql);
if
(!$rs)
{
return
false;
}
return
mysql_fetch_assoc($rs);
return
$row[0];
}
public
function
close()
{
mysql_close($this-conn);
}
}
echo
‘pre’;
$mysql
=
new
Mysql();
print_r($mysql);
$sql
=
“insert
into
stu
values
(4,’wangwu’,’99998′)”;
if($mysql-query($sql)){
echo
“query成功”;
}else
{
echo
“失敗”;
}
echo
“br
/”;
$sql
=
“select
*
from
stu”;
$arr
=
$mysql-getAll($sql);
print_r($arr);
?
mysql中的一些稍微複雜用法實例代碼
前言
mysql的語法相信對大家來說都不是難事,但是本文主要給分享了一些mysql複雜用法的相關內容,通過這篇文章相信大家會對mysql更深的了解一些,下面話不多說了,來一起看看詳細的介紹吧
一對多數據顯示成一行
GROUP_CONCAT(expr)
1、涉及的表關係:teacher表、teacher_subject_rel表(教師所能教的學科表)、subject表
2、業務場景:
需要拉取所有教師的編號(teacher_no)、學科名(subject_name)。
nbsp
教師表(teacher)和學科(teacher_subject_rel)是一對多關係,
往往查詢出現的是同一教師多條
數據。我們希望得到每個教師一條數據
學科拼接成一條
1、基本語法
group_concat(
[DISTINCT]
要連接的欄位
[Order
BY
排序欄位
ASC/DESC]
[Separator
‘分隔符’]
)
2、例子
SELECT
t.teacher_id
as
‘教師id’,
t.teacher_no
‘教師編號’,
(
SELECT
GROUP_CONCAT(s.subject_name)
FROM
teacher_subject_rel
tsr
LEFT
JOIN
`subject`
s
ON
tsr.subject_id
=
s.subject_id
WHERE
t.teacher_id
=
tsr.teacher_id
)
AS
‘學科’
FROM
teacher
t
子查詢、查詢臨時表、EXISTS
例子
SELECT
*
FROM
(
SELECT
o.id,
o.student_intention_id,
s.
NAME,
s.area_id,
a.area_name,
s.exam_year,
o.
STATUS,
CASE
o.
STATUS
WHEN
‘1’
THEN
‘待提交’
WHEN
‘2’
THEN
‘待指派’
WHEN
‘3’
THEN
‘已完成’
WHEN
‘4’
THEN
‘處理中’
END
statusName,
CASE
o.emergency_degree
WHEN
‘1’
THEN
‘正常’
WHEN
‘2’
THEN
‘緊急’
WHEN
‘3’
THEN
‘非常緊急’
END
emergencyDegreeName,
o.emergency_degree,
o.update_time,
(
SELECT
first_lesson_time
FROM
jx_strategy
WHERE
jx_lesson_plan_order_id
=
o.id
AND
STATUS
IN
(2,
7)
AND
first_lesson_time
now()
ORDER
BY
first_lesson_time
ASC
LIMIT
1
)
AS
first_time,
(
SELECT
deal_user_id
FROM
jx_strategy
WHERE
jx_lesson_plan_order_id
=
o.id
AND
STATUS
7
AND
deal_user_id
ORDER
BY
id
DESC
LIMIT
1
)
AS
deal_user_id
FROM
jx_lesson_plan_order
o
LEFT
JOIN
student
s
ON
s.student_intention_id
=
o.student_intention_id
LEFT
JOIN
area
a
ON
s.area_id
=
a.id
WHERE
o.
STATUS
1
AND
s.phone
=
‘18501665888’
AND
o.emergency_degree
=
1
AND
o.
STATUS
=
2
AND
s.exam_year
=
‘2015’
AND
o.update_time
=
‘2018-08-14
20:28:55′
AND
o.update_time
=
‘2018-08-14
20:28:55′
)
AS
a
WHERE
1
=
1
AND
a.deal_user_id
=
145316
AND
a.first_time
=
‘2018-08-17
00:00:00′
AND
a.first_time
=
‘2018-08-30
00:00:00′
AND
EXISTS
(
SELECT
*
FROM
jx_strategy
js
WHERE
js.jx_lesson_plan_order_id
=
a.id
AND
js.
STATUS
IN
(2,
7)
AND
js.subject_id
IN
(2,
3)
)
ORDER
BY
a.update_time
DESC
LIMIT
0,
10
update
關聯變數條件修改
1、涉及的表關係:
user_info表中的
id_number(身份證號)
teacher表中的birth欄位、
關聯關係usrer_id
=
teacher_id
2、業務場景:獲取用戶身份證上的出生日期將出生日期更新在birth欄位
UPDATE
teacher
t
INNER
JOIN
(
SELECT
t.teacher_id,
t.birth,
u.id_number,
CONCAT(SUBSTRING(u.id_number,
7,
4),
‘-‘,
SUBSTRING(u.id_number,
11,
2),
‘-‘,
SUBSTRING(u.id_number,
13,
2))
as
birth1,
u.reg_date,
t.exit_time
from
teacher
t
INNER
JOIN
user_info
u
ON
u.user_id
=
t.teacher_id
)
info
on
info.teacher_id
=
t.teacher_id
SET
t.birth
=
info.birth1
WHERE
info.reg_date
‘2018-08-20
00:00:00′
and
info.id_number
is
not
NULL
and
(info.birth
is
NULL
or
t.birth
=
”)
and
t.is_train
=
1
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
您可能感興趣的文章:MySQL在關聯複雜情況下所能做出的一些優化Mysql一些複雜的sql語句(查詢與刪除重複的行)深入mysql
“ON
DUPLICATE
KEY
UPDATE”
語法的分析MySQL
最基本的SQL語法/語句MySQL與Oracle的語法區別詳細對比淺析Mysql
Join語法以及性能優化MySQL
ALTER語法的運用方法MySQL
prepare語句的SQL語法MySQL進階SELECT語法篇MySQL
SQL
語法參考
PHP同時連接多個mysql資料庫示例代碼
這篇文章主要介紹了PHP同時連接多個mysql資料庫的具體實現,需要的朋友可以參考下
實例:
代碼如下:
?php
$conn1
=
mysql_connect(“127.0.0.1”,
“root”,”root”,”db1″);
mysql_select_db(“db1”,
$conn1);
$conn2
=
mysql_connect(“127.0.0.1”,
“root”,”root”,”db2″);
mysql_select_db(“db2”,
$conn2);
$sql
=
“select
*
from
ip”;
$query
=
mysql_query($sql);
if($row
=
mysql_fetch_array($query))
echo
$row[0].”n”;
$sql
=
“select
*
from
web
“;
$query
=
mysql_query($sql);
if($row
=
mysql_fetch_array($query))
echo
$row[0];
?
這段代碼存在問題,在程序執行時會報錯:PHP
Warning:
mysql_fetch_array()
expects
parameter
1
to
be
resource,
boolean
given
in
….
原因分析:
程序開始建立兩個資料庫鏈接,函數mysql_query()原型:
resource
mysql_query
(
string
$query
[,
resource
$link_identifier
]
)
向與指定的連接標識符關聯的伺服器中的當前活動資料庫發送一條查詢。如果沒有指定
link_identifier,則使用上一個打開的連接。如果沒有打開的連接,本函數會嘗試無參數調用
mysql_connect()
函數來建立一個連接並使用之。查詢結果會被緩存。
在本例中由於沒有指定link_identifier,所以,在執行第一條sql時,默認使用的是上一個打開的鏈接,即$conn2,而實際上第一條sql語句應該使用的是$conn1,所以導致報錯,所以為了能夠鏈接多個mysql資料庫,可以使用如下方法:
方法1:在mysql_query函數中指定所用連接,即:
代碼如下:
?php
$conn1
=
mysql_connect(“127.0.0.1”,
“root”,”root”,”db1″);
mysql_select_db(“Muma”,
$conn1);
$conn2
=
mysql_connect(“127.0.0.1”,
“root”,”root”,”db2″);
mysql_select_db(“product”,
$conn2);
$sql
=
“select
*
from
ip”;
$query
=
mysql_query($sql,$conn1);
//添加連接$conn1
if($row
=
mysql_fetch_array($query))
echo
$row[0].”n”;
$sql
=
“select
*
from
web
“;
$query
=
mysql_query($sql,
$conn2);
if($row
=
mysql_fetch_array($query))
echo
$row[0];
?
方法2:在sql語句中關聯所用資料庫,此時可以省略mysql_query的第二個參數,即:
代碼如下:
?php
$conn1
=
mysql_connect(“127.0.0.1”,
“root”,”root”,”db1″);
mysql_select_db(“db1”,
$conn1);
$conn2
=
mysql_connect(“127.0.0.1”,
“root”,”root”,”db2″);
mysql_select_db(“db2”,
$conn2);
$sql
=
“select
*
from
db1.ip”;
//關聯資料庫
$query
=
mysql_query($sql);
if($row
=
mysql_fetch_array($query))
echo
$row[0].”n”;
$sql
=
“select
*
from
db2.web
“;
$query
=
mysql_query($sql);
if($row
=
mysql_fetch_array($query))
echo
$row[0];
?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/253831.html