PHP5 操作MySQL資料庫基礎代碼

來源:互聯網
上載者:User

1. 建立資料庫連接 複製代碼 代碼如下:<?php
$mysqli = new mysqli("localhost","root","","mydb");
?>

建立一個資料庫連接需要四個參數,分別為資料庫地址、資料庫訪問使用者名稱、資料庫訪問密碼、資料庫名稱。除了使用上面的mysqli對象的構造方法建立資料庫連接外,還可以調用其connect方法建立資料庫的串連。 複製代碼 代碼如下:<?php
$mysqli = new mysqli();
$mysqli->connect("localhost","root","","mydb");
?>

還可以通過mysqli對象的構造方法建立資料連線,通過select_db方法指定要訪問的資料庫。 複製代碼 代碼如下:<?php
$mysqli = new mysqli("localhost","root","");
$mysqli->select_db("mydb");
?>

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

當然可以通過mysqli對象的error屬性擷取當前串連的錯誤資訊,如果沒有錯誤,返回“”。 複製代碼 代碼如下:<?php
$mysqli = new mysqli("localhost","rootsss","");
$mysqli->select_db("mydb");
if($mysqli->errno == 0) //判斷當前串連是否成功
{
}
else
{
echo $mysqli->error; //輸出當前錯誤資訊
exit();
}
?>

2.查詢資料庫
查詢資料庫可以使用mysqli對象的query方法,該方法返回查詢資料庫的結果集。
文法為:$mysqli->query(查詢語句,查詢模式);
查詢模式有兩種:
① MYSQLI_STORE_RESULT。將結果作為一個緩衝集進行返回,這說明可以立即對整個結果集進行導航。該設定為預設設定。結果集查詢出來後就放入記憶體中,這就代表如果結果集內資料量很大則會佔用較多的記憶體。但是利用這種方式我們可以很容易知道一個查詢返回了多少行記錄或希望立即跳到結果集的某一行。
② MYSQLI_USE_RESULT。將結果集作為一個非緩衝集返回。這就代表會根據需要從資料庫伺服器擷取結果集,對於較大的結果集資料這樣做可以提高效能。但是會導致很多對結果集的操作受到限制,比如擷取查詢行數等。 複製代碼 代碼如下:<?php
$mysqli = new mysqli("localhost","root","");
$mysqli->select_db("mydb");
if($mysqli->errno == 0) //判斷當前串連是否成功
{
$sql = "SELECT * FROM student";
$result = $mysqli->query($sql);
echo "Result row nums:".$result->num_rows."<br>"; //顯示結果集數量
//迭代結果集
while(list($id,$name,$age,$address) = $result->fetch_row())
{
echo "$id : $name : $age : $address"."<br>";
}
}
else
{
echo $mysqli->error; //輸出當前錯誤資訊
exit();
}
?>

使用結果集對象的fetch_row方法擷取結果集中每一行資料,每一行資料為一個關聯陣列,並使用list方法將其中的每個資料進行輸出。還可以使用輸出對象的方式將結果集中的每一行進行輸出。 複製代碼 代碼如下:<?php
$mysqli = new mysqli("localhost","root","");
$mysqli->select_db("mydb");
if($mysqli->errno == 0) //判斷當前串連是否成功
{
$sql = "SELECT * FROM student";
$result = $mysqli->query($sql);
echo "Result row nums:".$result->num_rows."<br>"; //顯示結果集數量
//迭代結果集
while($rowObject = $result->fetch_object())
{
echo "$rowObject->id : $rowObject->name : $rowObject->age : $rowObject->address"."<br>";
}
}
else
{
echo $mysqli->error; //輸出當前錯誤資訊
exit();
}
?>

其中使用fetch_object方法將每一行中的資料封裝為一個對象,在上面的例子中該對象為$rowObject,資料庫中每一列成為該對象的屬性,通過該對象調用其屬性名稱就可以擷取對應的欄位值。比如擷取學生姓名$rowObject->name。
還可以使用fetch_array方法將每一行資料返回為一個關聯陣列或是一個索引數組,或者同時返回關聯陣列和索引數組。fetch_array方法的模式參數來指定當前返回數組的模式:
① MYSQLI_ASSOC。返回關聯陣列,key為欄位名,value為欄位值。
② MYSQLI_NUM。返回索引數組,返回順序和查詢欄位順序相同。
③ MYSQLI_BOTH。同時返回關聯陣列和索引數組。預設設定。 複製代碼 代碼如下:<?php
while($row = $result->fetch_array(MYSQLI_ASSOC)) //返回關聯陣列
{
echo $row['id']. $row['name'].$row['age'].$row['address']."<br>";
}
?>

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

3.釋放記憶體
如果結果集中資料量巨大並且已經使用完畢後,結果集對象的free方法用於釋放結果集佔用的記憶體。一旦調用了free方法,結果集將不再可用。 複製代碼 代碼如下:<?php
...
$result->free(); //釋放記憶體
?>

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

調用mysqli對象的affected_rows屬性可以擷取影響的行數。
5.關閉資料庫連接
當一個資料庫連接使用完畢後調用mysqli對象的close方法將其關閉。 複製代碼 代碼如下:<?php
...
$mysqli->close();
?>

6.使用綁定參數
在PHP中的綁定參數和Java中的預先處理SQL是相同的原理,當反覆執行一個SQL時,SQL的參數不定時可以使用綁定參數方式可以提升SQL的執行速度. 複製代碼 代碼如下:<?php
$mysqli = new mysqli("localhost","root","");
$mysqli->select_db("mydb");
if($mysqli->errno == 0) //判斷當前串連是否成功
{
$sql = "INSERT INTO student(id,name,age,address) VALUES(?,?,?,?)";
$stmt = $mysqli->stmt_init(); //建立預先處理對象
$stmt->prepare($sql); //對SQL進行預先處理
$stmt->bind_param("isis",$id,$name,$age,$address); //設定綁定的變數 第一個參數為變數的資料類型
for($i = 12;$i<100;$i++)
{
$id = $i + 1;
$name = "樊凱";
$age = 23;
$address = "xian";
$stmt->execute(); //執行SQL語句
}
echo $mysqli->affected_rows; //輸出影響的行數
$stmt->close(); //釋放預先處理對象佔用的記憶體
$mysqli->close(); //關閉資料庫連接
}
else
{
echo $mysqli->error; //輸出當前錯誤資訊
exit();
}
?>

需要注意的是bind_param方法的第一個參數,該參數指定了後面的變數的資料類型,這些資料類型如下所示:
① i : 所有的Integer類型。
② d : 所有的double和float類型。
③ b : Blob類型。
④ s : 其他資料類型包括字串。
7.結果綁定
結果綁定用於將查詢結果和一些變數進行綁定。 複製代碼 代碼如下:<?php
$mysqli = new mysqli("localhost","root","");
$mysqli->select_db("mydb");
if($mysqli->errno == 0) //判斷當前串連是否成功
{
$sql = "SELECT * FROM student";
$stmt = $mysqli->stmt_init(); //建立預先處理對象
$stmt->prepare($sql); //對SQL進行預先處理
$stmt->bind_result($id,$name,$age,$address); //將查詢結果欄位綁定到變數中
$stmt->execute(); //執行SQL語句
while($stmt->fetch()) //fetch方法用於擷取結果集中的每一行,並將相應欄位值賦給變數
{
echo "$id : $name : $age : $address"."<br>";
}
$stmt->close(); //釋放預先處理對象佔用的記憶體
$mysqli->close(); //關閉資料庫連接
}
else
{
echo $mysqli->error; //輸出當前錯誤資訊
exit();
}
?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.