一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP5 操作MySQL數(shù)據(jù)庫基礎(chǔ)代碼

1. 建立數(shù)據(jù)庫連接
復(fù)制代碼 代碼如下:
<?php
$mysqli = new mysqli("localhost","root","","mydb");
?>

建立一個數(shù)據(jù)庫連接需要四個參數(shù),分別為數(shù)據(jù)庫地址、數(shù)據(jù)庫訪問用戶名、數(shù)據(jù)庫訪問密碼、數(shù)據(jù)庫名稱。除了使用上面的mysqli對象的構(gòu)造方法建立數(shù)據(jù)庫連接外,還可以調(diào)用其connect方法建立數(shù)據(jù)庫的連接。
復(fù)制代碼 代碼如下:
<?php
$mysqli = new mysqli();
$mysqli->connect("localhost","root","","mydb");
?>

還可以通過mysqli對象的構(gòu)造方法建立數(shù)據(jù)連接,通過select_db方法指定要訪問的數(shù)據(jù)庫。
復(fù)制代碼 代碼如下:
<?php
$mysqli = new mysqli("localhost","root","");
$mysqli->select_db("mydb");
?>

通過mysqli對象的errno屬性獲取當(dāng)前連接的錯誤號,如果當(dāng)前連接沒有任何錯誤,錯誤號返回為0。
復(fù)制代碼 代碼如下:
<?php
$mysqli = new mysqli("localhost","root","");
$mysqli->select_db("mydb");
if($mysqli->errno == 0) //判斷當(dāng)前連接是否成功
{
}
else
{
echo "The Connection is Error!";
exit();
}
?>

當(dāng)然可以通過mysqli對象的error屬性獲取當(dāng)前連接的錯誤信息,如果沒有錯誤,返回“”。
復(fù)制代碼 代碼如下:
<?php
$mysqli = new mysqli("localhost","rootsss","");
$mysqli->select_db("mydb");
if($mysqli->errno == 0) //判斷當(dāng)前連接是否成功
{
}
else
{
echo $mysqli->error; //輸出當(dāng)前錯誤信息
exit();
}
?>

2.查詢數(shù)據(jù)庫
查詢數(shù)據(jù)庫可以使用mysqli對象的query方法,該方法返回查詢數(shù)據(jù)庫的結(jié)果集。
語法為:$mysqli->query(查詢語句,查詢模式);
查詢模式有兩種:
① MYSQLI_STORE_RESULT。將結(jié)果作為一個緩存集進(jìn)行返回,這說明可以立即對整個結(jié)果集進(jìn)行導(dǎo)航。該設(shè)置為默認(rèn)設(shè)置。結(jié)果集查詢出來后就放入內(nèi)存中,這就代表如果結(jié)果集內(nèi)數(shù)據(jù)量很大則會占用較多的內(nèi)存。但是利用這種方式我們可以很容易知道一個查詢返回了多少行記錄或希望立即跳到結(jié)果集的某一行。
② MYSQLI_USE_RESULT。將結(jié)果集作為一個非緩存集返回。這就代表會根據(jù)需要從數(shù)據(jù)庫服務(wù)器獲取結(jié)果集,對于較大的結(jié)果集數(shù)據(jù)這樣做可以提高性能。但是會導(dǎo)致很多對結(jié)果集的操作受到限制,比如獲取查詢行數(shù)等。
復(fù)制代碼 代碼如下:
<?php
$mysqli = new mysqli("localhost","root","");
$mysqli->select_db("mydb");
if($mysqli->errno == 0) //判斷當(dāng)前連接是否成功
{
$sql = "SELECT * FROM student";
$result = $mysqli->query($sql);
echo "Result row nums:".$result->num_rows."<br>"; //顯示結(jié)果集數(shù)量
//迭代結(jié)果集
while(list($id,$name,$age,$address) = $result->fetch_row())
{
echo "$id : $name : $age : $address"."<br>";
}
}
else
{
echo $mysqli->error; //輸出當(dāng)前錯誤信息
exit();
}
?>

使用結(jié)果集對象的fetch_row方法獲取結(jié)果集中每一行數(shù)據(jù),每一行數(shù)據(jù)為一個關(guān)聯(lián)數(shù)組,并使用list方法將其中的每個數(shù)據(jù)進(jìn)行輸出。還可以使用輸出對象的方式將結(jié)果集中的每一行進(jìn)行輸出。
復(fù)制代碼 代碼如下:
<?php
$mysqli = new mysqli("localhost","root","");
$mysqli->select_db("mydb");
if($mysqli->errno == 0) //判斷當(dāng)前連接是否成功
{
$sql = "SELECT * FROM student";
$result = $mysqli->query($sql);
echo "Result row nums:".$result->num_rows."<br>"; //顯示結(jié)果集數(shù)量
//迭代結(jié)果集
while($rowObject = $result->fetch_object())
{
echo "$rowObject->id : $rowObject->name : $rowObject->age : $rowObject->address"."<br>";
}
}
else
{
echo $mysqli->error; //輸出當(dāng)前錯誤信息
exit();
}
?>

其中使用fetch_object方法將每一行中的數(shù)據(jù)封裝為一個對象,在上面的例子中該對象為$rowObject,數(shù)據(jù)庫中每一列成為該對象的屬性,通過該對象調(diào)用其屬性名稱就可以獲取對應(yīng)的字段值。比如獲取學(xué)生姓名$rowObject->name。
還可以使用fetch_array方法將每一行數(shù)據(jù)返回為一個關(guān)聯(lián)數(shù)組或是一個索引數(shù)組,或者同時返回關(guān)聯(lián)數(shù)組和索引數(shù)組。fetch_array方法的模式參數(shù)來指定當(dāng)前返回數(shù)組的模式:
① MYSQLI_ASSOC。返回關(guān)聯(lián)數(shù)組,key為字段名,value為字段值。
② MYSQLI_NUM。返回索引數(shù)組,返回順序和查詢字段順序相同。
③ MYSQLI_BOTH。同時返回關(guān)聯(lián)數(shù)組和索引數(shù)組。默認(rèn)設(shè)置。
復(fù)制代碼 代碼如下:
<?php
while($row = $result->fetch_array(MYSQLI_ASSOC)) //返回關(guān)聯(lián)數(shù)組
{
echo $row['id']. $row['name'].$row['age'].$row['address']."<br>";
}
?>


復(fù)制代碼 代碼如下:
<?php
while($row = $result->fetch_array(MYSQLI_NUM)) //返回索引數(shù)組
{
echo $row[0]. $row[1].$row[2].$row[3]."<br>";
}
?>

3.釋放內(nèi)存
如果結(jié)果集中數(shù)據(jù)量巨大并且已經(jīng)使用完畢后,結(jié)果集對象的free方法用于釋放結(jié)果集占用的內(nèi)存。一旦調(diào)用了free方法,結(jié)果集將不再可用。
復(fù)制代碼 代碼如下:
<?php
...
$result->free(); //釋放內(nèi)存
?>

4.添加、修改和刪除操作
使用mysqli對象的query方法依然可以進(jìn)行對數(shù)據(jù)庫的添加、修改和刪除操作,只不過是SQL語句的不同而已。我們以添加數(shù)據(jù)為例:
復(fù)制代碼 代碼如下:
<?php
$mysqli = new mysqli("localhost","root","");
$mysqli->select_db("mydb");
if($mysqli->errno == 0) //判斷當(dāng)前連接是否成功
{
$sql = "INSERT INTO student(id,name,age,address) VALUES('8','kay','23','xian')";
$result = $mysqli->query($sql);
echo $mysqli->affected_rows; //輸出影響的行數(shù)
}
else
{
echo $mysqli->error; //輸出當(dāng)前錯誤信息
exit();
}
?>

調(diào)用mysqli對象的affected_rows屬性可以獲取影響的行數(shù)。
5.關(guān)閉數(shù)據(jù)庫連接
當(dāng)一個數(shù)據(jù)庫連接使用完畢后調(diào)用mysqli對象的close方法將其關(guān)閉。
復(fù)制代碼 代碼如下:
<?php
...
$mysqli->close();
?>

6.使用綁定參數(shù)
php中的綁定參數(shù)和Java中的預(yù)處理SQL是相同的原理,當(dāng)反復(fù)執(zhí)行一個SQL時,SQL的參數(shù)不定時可以使用綁定參數(shù)方式可以提升SQL的執(zhí)行速度.
復(fù)制代碼 代碼如下:
<?php
$mysqli = new mysqli("localhost","root","");
$mysqli->select_db("mydb");
if($mysqli->errno == 0) //判斷當(dāng)前連接是否成功
{
$sql = "INSERT INTO student(id,name,age,address) VALUES(?,?,?,?)";
$stmt = $mysqli->stmt_init(); //創(chuàng)建預(yù)處理對象
$stmt->prepare($sql); //對SQL進(jìn)行預(yù)處理
$stmt->bind_param("isis",$id,$name,$age,$address); //設(shè)置綁定的變量 第一個參數(shù)為變量的數(shù)據(jù)類型
for($i = 12;$i<100;$i++)
{
$id = $i + 1;
$name = "樊凱";
$age = 23;
$address = "xian";
$stmt->execute(); //執(zhí)行SQL語句
}
echo $mysqli->affected_rows; //輸出影響的行數(shù)
$stmt->close(); //釋放預(yù)處理對象占用的內(nèi)存
$mysqli->close(); //關(guān)閉數(shù)據(jù)庫連接
}
else
{
echo $mysqli->error; //輸出當(dāng)前錯誤信息
exit();
}
?>

需要注意的是bind_param方法的第一個參數(shù),該參數(shù)指定了后面的變量的數(shù)據(jù)類型,這些數(shù)據(jù)類型如下所示:
① i : 所有的Integer類型。
② d : 所有的double和float類型。
③ b : Blob類型。
④ s : 其他數(shù)據(jù)類型包括字符串。
7.結(jié)果綁定
結(jié)果綁定用于將查詢結(jié)果和一些變量進(jìn)行綁定。
復(fù)制代碼 代碼如下:
<?php
$mysqli = new mysqli("localhost","root","");
$mysqli->select_db("mydb");
if($mysqli->errno == 0) //判斷當(dāng)前連接是否成功
{
$sql = "SELECT * FROM student";
$stmt = $mysqli->stmt_init(); //創(chuàng)建預(yù)處理對象
$stmt->prepare($sql); //對SQL進(jìn)行預(yù)處理
$stmt->bind_result($id,$name,$age,$address); //將查詢結(jié)果字段綁定到變量中
$stmt->execute(); //執(zhí)行SQL語句
while($stmt->fetch()) //fetch方法用于獲取結(jié)果集中的每一行,并將相應(yīng)字段值賦給變量
{
echo "$id : $name : $age : $address"."<br>";
}
$stmt->close(); //釋放預(yù)處理對象占用的內(nèi)存
$mysqli->close(); //關(guān)閉數(shù)據(jù)庫連接
}
else
{
echo $mysqli->error; //輸出當(dāng)前錯誤信息
exit();
}
?>

php技術(shù)PHP5 操作MySQL數(shù)據(jù)庫基礎(chǔ)代碼,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 美女国内精品自产拍在线播放 | 欧美人与禽交视频在线观看 | 国产美女一区二区三区 | 国产成综合 | 天堂成人在线观看 | 9ⅰ视频在线播放 | 国产91精品在线观看 | 激情图片激情视频激情小说 | 国产91精品高清一区二区三区 | 成人免费大片黄在线观看com | 视频二区在线观看 | 好吊免费视频 | 大量出精汇编免费看 | 国产丝袜美腿高跟白浆 | 色人影院 | 蜜桃福利视频 | 婷婷在线免费视频 | 一级特黄国产高清毛片97看片 | 超级香蕉97视频在线观看一区 | 欧美精品自拍 | www.日本黄| 午夜视频一区 | 正在播放一区二区 | 美妇乱人伦性 | 另类文字小说图片 | 夜色资源站www国产在线资源 | 一本色道久久88 | 成人小视频免费在线观看 | 91社区视频在线观看 | 欧美成国产精品 | 婷婷色婷婷 | 狠狠夜色午夜久久综合热91 | 国产精品大白天新婚身材 | 国产高清小视频 | 伊人久久大线蕉香港三级 | 天天综合网天天综合色不卡 | 国产亚洲小视频 | 91精品小视频 | 在线观看午夜视频 | 久久夜色精品国产噜噜亚洲a | 久久激情小说 |