php连接数据库有两种方式,一种是MySQLi,一种是PDO。两种各有优势
PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。所以,如果你的项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部门查询语句即可。 使用 MySQLi, 如果不同数据库,你需要重新所有代码,包括查询。
两者都是面向对象, 但 MySQLi 还提供了 API 接口。
两者都支持预处理语句。 预处理语句可以防止 SQL 注入,对于 web 项目的安全性是非常重要的。
连接MySQL:
$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语句,则可以:
$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";
$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 "
";
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 "
";
if($stmt->execute()){
echo "sucessfully";
}
else
echo "error";
以上就是简单的PHP连MySQL的增删查改操作。