您的位置:首页 > 编程语言 > PHP开发

php学习笔记(一)——数据库连接及数据获取和添加

2018-01-30 11:04 477 查看
最近想学习一下php简单的数据库操作,与前端页面结合,各种百度+调试,向自己想要的一点一点靠近。

因为要学习后端语言就需要有一个服务器环境,我选择的是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"。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息