连接数据库

连接数据库常用的函数

mysqli_connect(主机IP,用户名,密码,数据库名,端口号)  // 端口号如果是3306可以省略
mysqli_connect_error():获取连接数据库的错误信息
mysqli_connect_erron():获取连接数据库的错误代码
mysqli_set_charset(连接对象,字符编码)

连接示例:连接失败的例子

<?php 

	header("Content-Type: text/html","charse: utf-8");
# 连接数据库
$conn = @mysqli_connect('localhost','root','Admin123','junglezts','3306'); # 设置数据库字符编码,这里如果连接失败是无法设置的。
mysqli_set_charset($conn,'utf8'); # 如果连接失败
if(mysqli_connect_error()){
// 输入错误代号,错误信息。
echo "错误号:".mysqli_connect_errno(),"<br>";
echo "错误信息:".mysqli_connect_error();
} ?>

操作数据库

数据库操作语句,增加、删除、更改的结果返回都是TrueFasle

-- 增加
insert into 表名 (字段1,字段2,字段...) values (字段值1,字段值2,字段值...);
-- 删除,整行伤处数据
delete from 表名 where 字段名 = 字段值 and ...;
-- 更改
update 表名 set 字段名 = '字段值' where 字段名 = 字段值 and ...

常用的PHP函数

mysqli_query():执行SQL语句
mysqli_query_id():获取插入纪录自动增长的ID
mysqli_affected_rows():受影响的记录数
mysqli_error():SQL语句执行的错误信息
mysqli_errno():SQL语句执行的错误码

执行insert SQL语句

<?php 

	# 操作数据库
$conn = mysqli_connect('localhost','root','Admin123','junglezt','3306');
# 设置字符编码
mysqli_set_charset($conn,"utf8");
# 执行SQL语句
$sql = "insert into user values (1,'zhangsan','123123')";
$mysql_resp = mysqli_query($conn,$sql);
# 查询返回结果
var_dump($mysql_resp);
?>

成功执行SQL语句



测试函数

<?php 

	# 操作数据库
$conn = mysqli_connect('localhost','root','Admin123','junglezt','3306');
# 设置字符编码
mysqli_set_charset($conn,"utf8");
# 执行SQL语句
$sql = "insert into user values ( ,'LQL','azt1314')";
$mysql_resp = mysqli_query($conn,$sql); if ($mysql_resp){
echo "自动增长的编号是:".mysqli_insert_id($conn),"<br/>";
echo "受影响的行数:".mysqli_affected_rows($conn);
}else{
echo "SQL查询错误信息:".mysqli_error($conn),"<br/>";
echo "SQL查询错误码:".mysqli_errno($conn);
}
?>

操作返回数据函数

mysqli_fetch_row() -- 将对象中的一条数据匹配成索引数组(数字下标),指针下移一条
mysqli_fetch_assoc() -- 将对象中的一条数据匹配成关联数组(字段下标),指针下移一条
mysqli_fetch_array() -- 经对象中的一条数据匹配成索引和关联数组(数字、字段下标各一种),指针下移一条
mysqli_fetch_all() -- 匹配所有
mysqli_num_rows() -- 返回的行数
mysqli_num_fields() -- 返回的列数
mysqli_free_result() -- 销毁结果集合
mysqli_close() -- 关闭连接

示例:

<?php 

	# 连接数据库
$conn = mysqli_connect('localhost','root','Admin123','junglezt','3306');
# 设置字符集
mysqli_set_charset($conn,'utf8'); # 进行 SQL 查询
$sql = 'select * from user';
$result = mysqli_query($conn,$sql); # 取出查询中每行的值
// $row1 = mysqli_fetch_assoc($result);
// $row2 = mysqli_fetch_row($result);
// $row3 = mysqli_fetch_array($result);
// echo "<pre>";
// print_r($row1);
// print_r($row2);
// print_r($row3); # 查询返回的行数、列数
// $row = mysqli_num_rows($result);
// $list = mysqli_num_fields($result);
// echo $row,"--",$list; 循环查询中所有字段的内容
foreach(mysqli_fetch_all($result) as $resp){
echo "ID : ".$resp[0]."\n";
echo "usernmae : ".$resp[1]."\n";
echo "password : ".$resp[2]."\n";
echo "\n";
} # 销毁结果集合
// mysqli_free_result($result);
// var_dump($result);
# 断开连接
// mysqli_close($conn);
?>

数据库操作之开个玩笑的用户后台管理

conn.php 数据库连接文件

<?php 

	# 连接数据库
$conn = mysqli_connect('localhost','root','Admin123','junglezt','3306') or die('数据库连接失败'.mysqli_connect_error()); ?>

index.php:主页

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>用户管理</title>
<style type="text/css">
body{
background-image: url('./img/bg.jpg');
background-size: 100% ;
background-repeat: no-repeat;
}
table{
ackground-color: #00000060;
border: 1px solid #000000;
margin: auto;
margin-top: 10%;
}
td{
padding: 5px;
border: 1px solid #000000;
}
.adduser{
margin-top: 10px;
margin-left: 510px;
font-size: 20px;
}
</style>
</head>
<body>
<?php
include "./inc/conn.php";
$sql = 'select * from user';
$result = mysqli_query($conn,$sql);
$link = mysqli_fetch_all($result);
?> <table>
<th>ID</th> <th>用户名</th> <th>密码</th> <th>修改</th> <th>删除</th>
<?php foreach($link as $resp):?>
<tr>
<td><?php echo $resp[0]?></td>
<td><?php echo $resp[1]?></td>
<td><?php echo $resp[2]?></td>
<td><a href="./update.php?user=<?php echo $resp[1]?>"><input type="submit" name="submit" value="修改"></a></td>
<td><a onclick="if(window.confirm('确定要删除吗?'))location.href='./del.php?id=<?php echo $resp[0]?>'"><input type="submit" name="submit" value="删除"></a></td>
</tr>
<?php endforeach;?>
</table>
<div>
<a href="./insert.php"><input type="submit" name="submit" value="创建" class="adduser"></a>
</div>
</body>
</html>

修改页面:update.php

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>修改用户信息</title>
</head>
<body>
<?php include "./inc/conn.php";
$user = $_GET['user'];
echo "当前用户是:{$user}";
?>
<form action="" method="POST">
新的用户名:<input type="text" name="new_name"><br>
旧密码:<input type="password" name="password"><br>
新密码:<input type="password" name="new_pass"><br>
<input type="submit" name="修改">
</form>
<?php
$new_name = $_POST['new_name'];
$new_pass = $_POST['new_pass'];
$result = mysqli_query($conn,"select * from user where username='{$user}'");
@$row_info = mysqli_fetch_row($result);
if ($row_info[1] == $user){
if (!empty($new_name) && !empty($new_pass)){
if ($row_info[2] === $_POST['password']){
$sql = "update user set username='{$new_name}',password='{$new_pass}' where username='{$user}'";
$resp = mysqli_query($conn,$sql);
if ($resp){
echo "用户名、密码更改成功";
}else{
echo "用户名、密码更改失败";
}
}else{
echo "旧密码不一致";
}
}else{
echo "新用户名、密码不能为空";
}
}else{
echo "未找到该用户";
}
?> </body>
</html>

删除页面:del.php

<?php 

	include "./inc/conn.php";
$id = $_GET['id'];
$sql = "delete from user where id={$id}";
$result = mysqli_query($conn,$sql);
if ($reuslt == NULL){
header("location:index.php");
}else{
echo "删除失败";
}
?>

创建用户页面: insert.php

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>创建用户</title>
</head>
<body>
<form action="insert.php" method="POST">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password_new"><br>
确认密码:<input type="password" name="password_again"><br>
<input type="submit" name="submit" value="创建用户">
</form>
<?php
include "./inc/conn.php";
if (!empty($_POST['submit'])){
# 获取输入的用户名和密码
$user = $_POST['username'];
$pass = $_POST['password_new'];
# 判断两次输入的密码是否一次
if (empty($pass)){
echo "密码不能为空";
}elseif($pass === $_POST['password_again']){
# 查询是否存在创建的用户
$select = mysqli_query($conn,"select * from user where username='{$user}'");
@$select_row = mysqli_num_rows($select);
# 判断是否已经创建
if ($select_row){
echo "{$user}已存在";
}else{
# 获取当前的一共有几个用户
$result = mysqli_query($conn,'select * from user');
$row = mysqli_num_rows($result); # 进行用户创建
$sql = "insert into user values ({$row},'{$user}','{$pass}')";
$resp = mysqli_query($conn,$sql);
# 如果SQL语句执行成功,用户创建成功
if ($resp){
echo "用户创建成功";
}else{
echo "用户创建失败";
}
}
}else{
echo "两次输入的密码不一致";
}
}else{
echo "请输入需要创建的用户和密码";
}
?>
</body>
</html>

这里是有SQL注入的,以后可以用来SQL注入的防护,和HTML加CSS的美化的练习,主要的功能都实现了。

PHP 数据库操作的更多相关文章

  1. 如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  2. 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~

    最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...

  3. MySQL 系列(二) 你不知道的数据库操作

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...

  4. ABP创建数据库操作步骤

    1 ABP创建数据库操作步骤 1.1 SimpleTaskSystem.Web项目中的Web.config文件修改数据库配置. <add name="Default" pro ...

  5. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. django数据库操作和中间件

    数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...

  7. [Android Pro] 完美Android Cursor使用例子(Android数据库操作)

    reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...

  8. phpcms v9 中的数据库操作函数

    1.查询 $this->select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='')   返回 ...

  9. Android打造属于自己的数据库操作类。

    1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...

  10. python之数据库操作

    数据库操作 Python 操作 Mysql 模块的安装 1 2 3 4 5 linux:     yum install MySQL-python   window:     http://files ...

随机推荐

  1. mycat分片的十四种算法

    MyCat的分片规则配置在 conf目录下的 rule.xml文件中定义 ; 环境准备 : schema.xml中的内容做好备份 , 并配置 逻辑库; <schema name="PA ...

  2. Thread 的run方法和start方法的区别

    start()方法是用来启动线程,实现了多线程运行 点进去查看源码,发现start方法创建一个线程 并让线程处于就绪状态,并且在start方法内会调用start0()方法,而start0作为本地方法  ...

  3. [OC] APP唤醒,URL Scheme,工程中的 URL Types 和 LSApplicationQueriesSchemes

    1.网页唤醒APP: 假设我们有一个APP,名字叫做 "APP甲",需要通过网页唤起 APP甲,我们首先需要在 APP甲的工程文件里配置参数 URL Types: 在 info.p ...

  4. net/http

    客户端 GET POST form表单 json body二进制流 上传文件 PUT DELETE HEAD 重定向 Client Request Response Cookie CookieJar ...

  5. 安卓10.0蓝牙HIDL的直通式初始化流程

    本文仅介绍扼要的流程,没有系统化介绍. 首先从system\bt\hci\src\hci_layer_android.cc文件的函数void hci_initialize() 开始初始化: void ...

  6. C#访问MySQL(二):数据插入与修改(增改)

    前言: 前面说了数据库的连接查询,现在说数据库的增删改.这里引入一个数据库的实体类,就是将当前数据库的某一个表里面所有字段写成实体类,如下: 1.数据库的实体类: 需要项目里下载Chloe.dll和C ...

  7. css中双冒号和单冒号区别

    :--是指的伪类 ::--是指的伪元素 1.字面意思: 伪类,1.css中有类选择器,某些元素并未定义类名,就可以通过伪类赋予样式,如:[:nth-child(n)]:2.伪类可以应用于元素执行某种状 ...

  8. TensorFlow架构

    Tensorflow基本信息 Tensorflow所需处理器 CPU,GPU,TPU(Google为AI研发的专用芯片) 平台 Windows,Linux,Android,iOS,Raspberry ...

  9. 出现SocketTimeoutException后一直无法在连接服务器

    在做接入sdk功能的时候,经常出现一个问题,内网向外网服务器建立连接并发送数据经常会报SocketTimeoutException这个错误,且一旦出现便大几率再也连不上了.修改之前的代码为: publ ...

  10. Java实现简单的大顶堆

    Java实现简单的大顶堆 今天刷LeetCode的347. 前 K 个高频元素的时候使用到了优先队列,由于对大顶堆掌握不算熟练,于是写了一个简单大顶堆练手: 实现代码在最后 之前很少使用泛型来写代码, ...