php+mysql
本文整理一下使用php和mysql向前端推送数据的过程。
数据库部分:
1.首先安装服务器,我选择xampp,安装可以选择任意地址。安装完成,打开xampp-control.exe 。
选择开启Apache和MySQL:

2.浏览器进去http://localhost/phpmyadmin/。
这个时候就可以看到数据库页面。新建一个数据库。

3.新建一个数据表,假设我们需要的数据有n个字段,字段数就选择n+1,多出的一个字段用来存放id。

4.新建完成后设置表的内容时,id记得勾选A_I,这样新建的表项id值会自动增加。如果是字符串类型的数据,排序规则选择utf8_general_ci,这样前端也使用utf8编码,不会出现乱码。
5.新建表完成以后,SQL页面可以看到如何使用命令行操作表格,后面我们在代码中对表格的操作也会利用这些命令行。
代码部分:
1.从数据库读取数据并显示在页面上,我们用jquery的ajax读取:
js代码:
var $lists = $("article ul");
$lists.empty();
$.ajax({
url: "server/getnews.php",
type: "get",/*ajax get方法读取数据*/
datatype: "json",/*json方式获取*/
data:{"newstype":newsType},/*传递一个条件,当newstype项的值为newsType时*/
success: function(data) {
$.each(data, function(index,item) {/*将data逐条遍历*/
console.log(item);
/*将数据内容放置到页面上*/
var $lists = $("article ul");
var $list = $("<li></li>").addClass("news-list").prependTo($lists);
var $newsImg = $("<div></div>").addClass("news-img").appendTo($list);
console.log(item.newstype);
var $img = $("<img>").attr("src", item.newsimg).appendTo($newsImg);
var $newsContent = $("<div></div>").addClass("news-content").appendTo($list);
var $h1 = $("<h1></h1>").html(item.newstitle).appendTo($newsContent);
var $p = $("<p></p>").appendTo($newsContent);
var $newsTime = $("<span></span>").addClass("news-time").html(item.newstime).appendTo($p);
var $newsSrc = $("<span></span>").addClass("news-src").html(item.newssrc).appendTo($p);
});
},
error: function(){
console.log('error');
}
});
下面看一下getnews.php怎么实现:
<?php
header("Content-type:application/json;charset=utf-8");
$link = mysql_connect('localhost','name','pwd');/*连接数据库,后两个参数是数据库的用户名密码*/ if($link){
mysql_select_db("testabc");/*连接数据库*/
mysql_query("SET NAMES utf8");
$newstype=$_GET["newstype"];/*获取参数newstype*/ if($newstype == "all"){
$sql = "SELECT * FROM news"; /*传递命令行,表示获取全部的表项*/
}else{
$sql = "SELECT * FROM `news` WHERE `newstype` = '{$newstype}'"; /*传递命令行,表示获取所有newstype等于传递的参数的表项*/
} $result = mysql_query($sql,$link); $senddata = array(); while($row = mysql_fetch_assoc($result)){
array_push($senddata,array(
'id'=>$row['id'],
'newstype'=>$row['newstype'],
'newsimg'=>$row['newsimg'],
'newstime'=>$row['newstime'],
'newssrc'=>$row['newssrc'],
'newstitle'=>$row['newstitle']
));
}
echo json_encode($senddata);
} mysql_close($link); ?>
2.向数据库写入数据:
js代码:
//添加一条数据
$("#btnsubmit").click(function(e) {
e.preventDefault();
//提交添加
var jsonNews = {
"newstitle": $("#newsTitle").val(),/*从页面读取到的值*/
"newstype": $("#newsType").val(),
"newsimg": $("#newsImg").val(),
"newstime": $("#newsTime").val(),
"newssrc": $("#newsSrc").val()
}
$.ajax({
url:"server/insert.php",
type:"post",/*ajax post方法提交*/
data:jsonNews,
datatype:"json",
success:function(data){
console.log(data);
},
error:function(XHR,textStatus,errorThrown){
console.log(textStatus+"ready:"+XHR.readyState);
}
}) });
php代码:
因为我们需要很多次调用php代码连接数据库,以后需要改动库名或者用户名等会很不方便,所以我们把连接数据库的操作单独提到一个文件中,比如命名为db.php:
//db.php <?php
header("Content-type:application/json;charset=utf-8");
//error_reporting(0);
$link = mysql_connect('localhost','name','pwd');
if(!$link){
echo json_encode(array('linkmsg'=>'false'));
}else{
mysql_select_db("testabc");
mysql_query("SET NAMES utf8");
}
?>
然后在其他php文件中直接调用这个文件:
//insert.php <?php
header("Content-type:application/json;charset=utf-8");
require_once('db.php'); if($link){
//插入新闻
$newstitle = addslashes(htmlspecialchars($_POST["newstitle"]));
$newstype = $_POST["newstype"];
$newsimg = $_POST["newsimg"];
$newstime = $_POST["newstime"];
$newssrc = $_POST["newssrc"]; $sql = "INSERT INTO `news` (`newstitle`,`newstype`,`newsimg`,`newstime`,`newssrc`) VALUES ('{$newstitle}','{$newstype}','{$newsimg}','{$newstime}','{$newssrc}')";
$result = mysql_query($sql,$link); echo json_encode(array("success"=>"ok"));
} mysql_close($link);
?>
3.删除一条数据:
//js代码删除一条数据
var deleteId = null;
$newsTbody.on("click",".btn-danger",function(e){
$("#deleteModal").modal("show");/*模态框提示是否确认删除*/
deleteId = $(this).parent().prevAll().eq(4).html();/*获取需要删除的数据的id*/
console.log(deleteId);
})
$("#deleteModal #confirmDelete").click(function(e){
if(deleteId){
$.ajax({
url: "server/delete.php",
type: "post",/*post方法提交请求*/
data:{"newsid":deleteId},
success:function(data){
console.log("delete success");
$("#deleteModal").modal("hide");
refreshNews();
}
})
}
});
对应的php:
//delete.php
<?php
header("Content-type:application/json;charset=utf-8");
require_once('db.php'); if($link){
$newsid = $_POST["newsid"];/*获取id*/ $sql = "DELETE FROM `news` WHERE `news`.`id`={$newsid}";/*组装删除命令*/
$result = mysql_query($sql,$link); echo json_encode(array("delete"=>"success"));
} mysql_close($link);
?>
4.修改一条数据:
//js代码修改新闻
var updateId = null;
$newsTbody.on("click",".btn-primary",function(e){
$("#updateModal").modal("show");/*弹出模态框来给用户修改*/
updateId = $(this).parent().prevAll().eq(4).html();/*获取修改的数据id*/ $.ajax({
url: "server/curnews.php",
type: "get",/*get方法获取本条数据显示在模态框*/
datatype:"json",
data:{"newsid":updateId},
success:function(data){
$("#unewsTitle").val(data[0].newstitle);
$("#unewsType").val(data[0].newstype);
$("#unewsImg").val(data[0].newsimg);
$("#unewsSrc").val(data[0].newssrc);
var utime = data[0].newstime.split(' ')[0];
$("#unewsTime").val(utime);
} })
})
$("#updateModal #confirmUpdate").click(function(e){
$.ajax({
url: "server/update.php",
type: "post",/*post方法将修改后的数据传回php*/
data:{
"newstitle":$("#unewsTitle").val(),
"newstype":$("#unewsType").val(),
"newsimg":$("#unewsImg").val(),
"newstime":$("#unewsTime").val(),
"newssrc":$("#unewsSrc").val(),
"id":updateId
},
success:function(data){
$("#updateModal").modal("hide");
refreshNews();
} }) });
//curnews.php <?php
header("Content-type:application/json;charset=utf-8");
require_once('db.php'); if($link){
$newsid = $_GET["newsid"];
//$newsid = 2;
$sql = "SELECT * FROM `news` WHERE `id`={$newsid}"; $result = mysql_query($sql,$link); $senddata = array(); while($row = mysql_fetch_assoc($result)){
array_push($senddata,array(
'id'=>$row['id'],
'newstype'=>$row['newstype'],
'newsimg'=>$row['newsimg'],
'newstime'=>$row['newstime'],
'newssrc'=>$row['newssrc'],
'newstitle'=>htmlspecialchars_decode($row['newstitle'])
));
}
echo json_encode($senddata); } mysql_close($link);
?> //update.php <?php
header("Content-type:application/json;charset=utf-8");
error_reporting(0);
require_once('db.php'); if($link){
//插入新闻
$newstitle = addslashes(htmlspecialchars($_POST["newstitle"]));
$newstype = $_POST["newstype"];
$newsimg = $_POST["newsimg"];
$newstime = $_POST["newstime"];
$newssrc = $_POST["newssrc"];
$newsid = $_POST['id']; $sql = "UPDATE `news` SET `newstitle`='{$newstitle}',`newstype`='{$newstype}',`newsimg`='{$newsimg}',`newstime`='{$newstime}',`newssrc`='{$newssrc}' WHERE `id`={$newsid}"; $result = mysql_query($sql,$link); echo json_encode(array("success"=>"ok"));
}
mysql_close($link);
?>
以上就是php+mysql数据库的增删查改方案。
附几张页面参考,利用bootstrap完成:
增加:

删除:

修改:

endding~
php+mysql的更多相关文章
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- mysql每秒最多能插入多少条数据 ? 死磕性能压测
前段时间搞优化,最后瓶颈发现都在数据库单点上. 问DBA,给我的写入答案是在1W(机械硬盘)左右. 联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘) 但这东西感 ...
- LINUX篇,设置MYSQL远程访问实用版
每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ...
- nodejs进阶(6)—连接MySQL数据库
1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- 闰秒导致MySQL服务器的CPU sys过高
今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- 当忘记mysql数据库密码时如何进行修改
因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...
随机推荐
- dotNet下的一套解决方案
很久没在博客园写文章了,打算把一直由自己一个人写的一整套系统开放出来,今天先放一些截图及可以演示的地址! 这套系统包含数据层(HB.Data).计划任务(HB.PlanTask).日志系统(HB.Lo ...
- 时时获得高德地图坐标 http://lbs.amap.com/console/show/picker
1.高德地图标注 在做开发时,或者做高德地图标注的时候,要用到高德地图的坐标,时时获得高德地图坐标 http://lbs.amap.com/console/show/picker 老的高德地图标注地址 ...
- Mysql 客户端查询结果如何保存到本地而不是服务端?
应用场景:知道某台DB服务器的IP和账户,登录上去查询了10W条记录,需要把这些记录拉到本地做分析 方法1,远程连接到DB服务器执行OUTFILE命令,文件存储在DB机器上,只有mysql账户的情况下 ...
- MySQL中优化sql语句查询常用的种方法
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...
- SQL Server的高级知识
DataSet的内容介绍,两种单例模式(并发量的考虑),SQL高级中的case语句.连接操作.子查询.派生表 -------------------------------- 1.Case的用法 使用 ...
- HTML5 History API实现无刷新跳转
在HTML5中, 新增了通过JS在浏览器历史记录中添加项目的功能. 在不刷新页面的前提下显示改变浏览器地址栏中的URL. 添加了当用户单击浏览器的后退按钮时触发的事件. 通过以上三点,可以实现在不刷新 ...
- jquery 监听所有锚点链接实现平滑移动
jquery 监听所有锚点链接实现平滑移动,地址栏上不会改变链接地址 //监听所有锚点链接实现平滑移动 $('a[href*=#],area[href*=#]').click(function() { ...
- c# 变量,对象,静态类型,集合类的线程安全回顾
1.变量的线程安全性与变量的作用域有关. 2.对象 对象是类型的实例 在创建对象时,会单独有内存区域存储对象的属性和方法.所以,一个类型的多个实例,在执行时,只要没有静态变量的参与,应该都是线程安全的 ...
- Elasticsearch初探
elasticsearch中的概念同传统数据库的类比如下: Relational DB -> Databases -> Tables -> Rows -> ColumnsEl ...
- 前端设计师也有必要学习seo,推荐一个seo博客
做前端设计师有一段时间了,现在越来越觉得作为一个前端设计师,必须要懂一些seo的知识. 因为公司的seo们,总是在网站做好以后,提出各种各样的网站修改的需求. 如果前端设计师,能够了解一些基本的seo ...