PDO 應用在 12 種不同數據庫中, MySQLi 只針對 MySQL 數據庫。所以,如果你的項目需要在多種數據庫中切換,建議使用 PDO ,這樣你只需要修改連接字符串和部門查詢語句即可。 使用 MySQLi, 如果不同數據庫,你需要重新所有代碼,包括查詢。
兩者都是面向對象, 但 MySQLi 還提供了 API 接口。
兩者都支持預處理語句。 預處理語句可以防止 SQL 注入,對於 web 項目的安全性是非常重要的。
連接MySQL:
<?php
$host ="localhost";
$user ="root";
$password ="123456";//密碼
$database ="test";//數據庫
$con =new mysqli($host, $user, $password, $database);
if (mysqli_connect_error()) {
die("Database connection failed: " . mysqli_connect_error());
}
else
echo "connect sucessfully";
?>
上面這種方式裏,直接傳入了我們的數據庫名,而不需要再在php中用sql語句來創建一個數據庫。如果需要用sql語句,則可以:
<?php
$host ="localhost";
$user ="root";
$password ="123456";//密碼
$con =new mysqli($host, $user, $password);
if (mysqli_connect_error()) {
die("Database connection failed: " . mysqli_connect_error());
}
else
echo "connect sucessfully";<pre name="code" class="php">$sql = "CREATE DATABASE test";
if (mysqli_query($con, $sql)) {
echo "Database created successfully";
} else {
echo "Error creating database: " . mysqli_error($conn);
}
mysqli_close($con);
?>
關閉連接:
$con->close();
接下來就是增刪查改操作了:
insert 操作:
/****************insert*************************/
$sql ="insert into logininfo (username,password) values(?,?)";
$stmt =$con->prepare( $sql);
$stmt->bind_param("ss", $username, $pass);
//ss表示後面的兩個參數都是string類型的
$username=$_POST['username'];//從前面的表單中獲取post傳遞的參數
$pass =$_POST['password'];
$stmt->execute();//執行插入操作
echo "insert sucessfully";
echo "<br>";
bind_param函數綁定了sql的參數,並且告訴數據庫參數的值。"ss" 參數列處理其餘參數的數據類型。s 字符告訴數據庫該參數爲字符串。
參數有以下四種類型:
- i - integer(整型)
- d - double(雙精度浮點型)
- s - string(字符串)
- b - BLOB(布爾值)
每個參數都需要指定類型。
通過告訴數據庫參數的數據類型,可以降低 SQL 注入的風險。
select操作:
$sql="select * from logininfo where username='".$_POST['userName']."'";//因爲用戶名是string類型的,所以要加''來
$result=$con->query($sql);
if($result){
// 輸出每行數據
while($row = $result->fetch_assoc()) {
if($row["password"]==$_POST['password'])
echo "login sucess";
else echo "password wrong";
}
}
else {
echo "0 results";
}
delete操作:
//***************delete********************/
$sql ="delete from logininfo where username='zjz'";
//如果不需要和前面的insert操作一樣用佔位符,則可以直接使用query方法
$state =$con->query($sql);
if($state)
echo "delete sucessfully";
else echo "error";
update操作:
$sql ="update logininfo set password=7724 where username='daming'";
if($con->query($sql)){
echo "update sucessfully";
}
else
echo "error";
用佔位符的方式:
//*******************update2*********************//
$sql ="update logininfo set password=7724 where username=?";
$stmt=$con->prepare($sql);
$name="xiaoming";
$stmt->bind_param("s", $name);
echo "<br><br>";
if($stmt->execute()){
echo "sucessfully";
}
else
echo "error";
以上就是簡單的PHP連MySQL的增刪查改操作。