php学习笔记(一)——数据库连接及数据获取和添加
2018-01-30 11:04
477 查看
最近想学习一下php简单的数据库操作,与前端页面结合,各种百度+调试,向自己想要的一点一点靠近。
因为要学习后端语言就需要有一个服务器环境,我选择的是wampserver集成化环境开发。
后端语言自然就选择了php,自我感觉php比其他的后端语言好学一点。
采用前后端分离的方式,前端用ajax获取php传递的数据。
然后再代码方面,刚开始我用的是mysql连接数据库,发现很多以mysql开头的代码都被一条横线杠掉了,然后去网上查询了一下,居然开始用mysqli来连接数据库了,进而百度(百度很强大,不懂先问他,之后才是人...)了解一下这两者的区别,然后得出一下结论:
mysql连接每当第二次使用的时候,都会重新打开一个新的进程,而mysqli则只使用同一个进程,这样可以很大程度的减轻服务器端压力。
恩~~~~(此处深深地沉思...)
接下来开始代码,刚开始接触的时候都是Ctrl+c and Ctrl+v,接着就是各种调试,改改改...
我在本地访问自己远程服务器上的php文件出现报错,经过百度查询后得出以下结论:
如果使用ajax跨域请求数据库则会报错:
No 'Access-Control-Allow-Origin'
header is present on the requested resource.
解决方法:
需要在PHP页面中添加代码:header("Access-Control-Allow-Origin: *");
如果服务器端可以确定是要被哪些域名访问,最好是能把以上代码中的“*”代替为具体的域名,这样做可以相应的增强安全性。
在php里面返回给ajax的数据用json_encode()传递,
html页面:
使用ajax获取php传递的数据
ajax接收到的data便是json_encode()传递的数据
$sql = "INSERT INTO t1 (title, about,small) VALUES ('".$_POST['title']."','".$_POST['about']."','".$_POST['small']."')"; // cha
mysqli_query($link,'set names utf8'); //设置读取数据后的编码
if (mysqli_query($link, $sql)) {
$backinfo = 1;
} else {
$backinfo = 0;
}
echo json_encode($backinfo);这里的title,about,small是数据表里面的字段,$_POST[]是页面上传递过来的数据,跟数据表里面的字段一一对应,
html页面
但是这样做有一个问题,就是每次提交后,页面都会跳转到get.php页面,而我不需要这样,所以改用ajax异步。
刚开始我使用的是button标签来作为表单的提交按钮,然后我一直想要拿到php添加表单成功后的返回值,却一直失败,后来发现每当我提交页面都会刷新,自然我想要的返回值就没有出现(心里默念:其实他是返回来了的),度娘告诉我用input来作为form表单的按钮,之后就成功了。
在IE(IE内核)下这样用到得的是值是“按钮”,而不是“test”,非IE下得到的是“test”。
2>>把<button>标签放到<form>标签中,你会发现点击这个button变成了提交,相当于<input type="submit"/> ,
所以不要把<button>标签当成<form>中的input元素。
button标签
定义和用法
button标签定义一个按钮。
在button元素内部,您可以放置内容,比如文本或图像。这是该元素与使用input元素创建的按钮之间的不同之处。
<button>控件与<input
type="button">相比,提供了更为强大的功能和更丰富的内容。<button>与 </button>标签之间的所有内容都是按钮的内容,其中包括任何可接受的正文内容,比如文本或多媒体内容。例如, 我们可以在按钮中包括一个图像和相关的文本,用它们在按钮中创建一个吸引人的标记图像。
唯一禁止使用的元素是图像映射,因为它对鼠标和键盘敏感的动作会干扰表单按钮的行为。
请始终为按钮规定type属性。InternetExplorer的默认类型是"button",而其他浏览器中(包括W3C规范)的默认值 是"submit"。
因为要学习后端语言就需要有一个服务器环境,我选择的是wampserver集成化环境开发。
后端语言自然就选择了php,自我感觉php比其他的后端语言好学一点。
采用前后端分离的方式,前端用ajax获取php传递的数据。
然后再代码方面,刚开始我用的是mysql连接数据库,发现很多以mysql开头的代码都被一条横线杠掉了,然后去网上查询了一下,居然开始用mysqli来连接数据库了,进而百度(百度很强大,不懂先问他,之后才是人...)了解一下这两者的区别,然后得出一下结论:
mysql连接每当第二次使用的时候,都会重新打开一个新的进程,而mysqli则只使用同一个进程,这样可以很大程度的减轻服务器端压力。
恩~~~~(此处深深地沉思...)
接下来开始代码,刚开始接触的时候都是Ctrl+c and Ctrl+v,接着就是各种调试,改改改...
1)连接数据库:
header ( "Content-type:text/html;charset=utf-8" ); //统一输出编码为utf-8 /* Connect to a MySQL server 连接数据库服务器 */ $link = mysqli_connect( 'localhost', /* The host to connect to 连接MySQL地址 */ 'root', /* The user to connect as 连接MySQL用户名 */ '', /* The password to use 连接MySQL密码 */ 'test'); /* The default database to query 连接数据库名称*/ if (!$link) { printf("Can't connect to MySQL Server. Errorcode: %s ", mysqli_connect_error()); exit; } /*此处搞点事情,比如修改,查询,删除数据库表内容等等等*/ ...... /* Close the connection 关闭连接*/ mysqli_close($link);
我在本地访问自己远程服务器上的php文件出现报错,经过百度查询后得出以下结论:
如果使用ajax跨域请求数据库则会报错:
No 'Access-Control-Allow-Origin'
header is present on the requested resource.
解决方法:
需要在PHP页面中添加代码:header("Access-Control-Allow-Origin: *");
如果服务器端可以确定是要被哪些域名访问,最好是能把以上代码中的“*”代替为具体的域名,这样做可以相应的增强安全性。
2)获取数据get.php
mysqli_query($link,'set names utf8'); //设置读取数据后的编码 $result = mysqli_query($link, 'SELECT * FROM t1'); // 查找test数据库里面的表t1 // 创建数组,存放数据库的数据并传递出去 $list = array(); while( $row = mysqli_fetch_assoc($result) ) { $list[] = $row;//将数据库里面的每一行数据存到list数组里面去 } echo json_encode($list);
在php里面返回给ajax的数据用json_encode()传递,
html页面:
使用ajax获取php传递的数据
$.ajax({ type: 'GET', url:'get.php', dataType:'json', success:function (data) { console.log(data) } });
ajax接收到的data便是json_encode()传递的数据
3)添加数据post.php
$backinfo = ''; // 返回的信息$sql = "INSERT INTO t1 (title, about,small) VALUES ('".$_POST['title']."','".$_POST['about']."','".$_POST['small']."')"; // cha
mysqli_query($link,'set names utf8'); //设置读取数据后的编码
if (mysqli_query($link, $sql)) {
$backinfo = 1;
} else {
$backinfo = 0;
}
echo json_encode($backinfo);这里的title,about,small是数据表里面的字段,$_POST[]是页面上传递过来的数据,跟数据表里面的字段一一对应,
html页面
1》使用form表单自带的属性将参数传递给php
<form id="form1" method="post" action="post.php"> <input type="text" placeholder="title" name="title" > 这里的name就是$_POST[]里面的内容 <input type="text" placeholder="about" name="about" > <input type="text" placeholder="small" name="small" > <button type="submit">提交</button> </form>
但是这样做有一个问题,就是每次提交后,页面都会跳转到get.php页面,而我不需要这样,所以改用ajax异步。
2》使用ajax传递数据给php
html<form id="form1"> <input type="text" placeholder="title" name="title" id="title"> <input type="text" placeholder="about" name="about" id="about"> <input type="text" placeholder="small" name="small" id="small"> <button type="submit" id="btn">提交</button> //这两个按钮有区别 <input type="button" id="btn" value="提交"> //这两个按钮有区别 </form>js
$("#btn").click(function(){ $.ajax({ type: "post", url: "post.php", dataType: "json", data:{ "title":$("#title").val(), //此时data里面的key值对应的是$_POST[]里面的内容 "about":$("#about").val(), "small":$("#small").val() }, success: function (result) { alert(result); //拿到结果 } }); })
刚开始我使用的是button标签来作为表单的提交按钮,然后我一直想要拿到php添加表单成功后的返回值,却一直失败,后来发现每当我提交页面都会刷新,自然我想要的返回值就没有出现(心里默念:其实他是返回来了的),度娘告诉我用input来作为form表单的按钮,之后就成功了。
button与input按钮的区别:
1>>通过$('#btn').val()获取<button id="btn" value="test">按钮</button>value的值在IE(IE内核)下这样用到得的是值是“按钮”,而不是“test”,非IE下得到的是“test”。
2>>把<button>标签放到<form>标签中,你会发现点击这个button变成了提交,相当于<input type="submit"/> ,
所以不要把<button>标签当成<form>中的input元素。
button标签
定义和用法
button标签定义一个按钮。
在button元素内部,您可以放置内容,比如文本或图像。这是该元素与使用input元素创建的按钮之间的不同之处。
<button>控件与<input
type="button">相比,提供了更为强大的功能和更丰富的内容。<button>与 </button>标签之间的所有内容都是按钮的内容,其中包括任何可接受的正文内容,比如文本或多媒体内容。例如, 我们可以在按钮中包括一个图像和相关的文本,用它们在按钮中创建一个吸引人的标记图像。
唯一禁止使用的元素是图像映射,因为它对鼠标和键盘敏感的动作会干扰表单按钮的行为。
请始终为按钮规定type属性。InternetExplorer的默认类型是"button",而其他浏览器中(包括W3C规范)的默认值 是"submit"。
相关文章推荐
- php学习笔记之PDO连接数据库及一些操作
- PHP学习笔记:用mysqli连接数据库
- PHP学习笔记【二】之《数据库抽象层PDO---PDO连接数据库》
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [1] 单例模式连接数据库
- PHP学习笔记(二):数据库连接
- php 连接mssql数据库 初学php笔记
- [转]十天学习PHP之第四天(PHP)----学会连接数据库
- PHP学习笔记(三)连接MySQL
- [转]IBatis连接数据库学习笔记
- PHP学习笔记之三 数据库基本操作
- php学习笔记(二)之保存至数据库
- 学习笔记:jdbc连接、操作数据库SQL Server 2008(二)
- PHP学习笔记之三:数据库基本操作
- Linux 下 PHP 5.2.x 连接 SQL Server 数据库 FreeTDS 配置笔记
- php学习笔记(9):Mysql简介和创建新的数据库
- IBatis连接数据库学习笔记
- C#学习笔记——(连接数据库)
- android 数据库 SQLiteOpenHelper和ContentProvider学习笔记---添加数据及显示(一)
- C++Builder学习笔记5.1(连接数据库,读写配置文件,加载DLL)