久违的练习一下,这次是以制作一个会员登入、注册的介面为目标所学习的一个历程,所用技术不外乎HTML、CSS、PHP、MySQL,主要以PHP串接MySQL为主,而本文章先以其核心功能增删改查做一个应用。
利用phpmyadmin创建好资料库。
再来,我们要在php创建一个专门连结资料库的档案。
$host : 先设定资料库资讯,主机通常都用本机。
$dbuser : 以root管理者帐号进入资料库。
$dbpassword : root的资料库密码。
$dbname : 登入後要使用的资料库(名称)。
mysqli_connect连结资料库('资料库主机','登入帐号','登入密码','要开启的资料库名称')
接着利用if判断是否有成功连结资料库,有的话利用mysqli_query来针对我们指定的资料库,执行所要使用的sql语法。
mysqli_query用来使用资料库的语法,(connection要连结的资料库,query资料库语法,resultmode常数(可有可无))
,此处无用到resultmode常数。
连结正确显示正确连接资料库,反之且显示错误资讯(利用mysqli_connect_error()来获取错误资讯)。
<?php
$host = 'localhost';
$dbuser ='root';
$dbpassword = '';
$dbname = 'member_db';
$link = mysqli_connect($host,$dbuser,$dbpassword,$dbname);
if($link){
mysqli_query($link,'SET NAMES uff8');
// echo "正确连接资料库";
}
else {
echo "不正确连接资料库</br>" . mysqli_connect_error();
}
?>
再来我们制作一个页面(index),可以跳转至对应功能。
在最上面来载入我们的db.php以连结资料库。
<?php
// 载入db.php来连结资料库
require_once 'db.php';
?>
<!doctype html>
<!-- lang代表网页主要语言,如果有设对於搜寻引擎是友善的,对於浏览器在判断是有帮助的 -->
<html lang="zh-Hant-TW">
...
...
<body>
<ul>
<li><a href="select.php">SELECT,查询列出资料库的资料</a></li>
<li><a href="insert.php">INSERT,新增资料到资料表</a></li>
<li><a href="update.php">UPDATE,更新资料表中的资料</a></li>
<li><a href="delete.php">DELETE,删除资料表中的资料</a></li>
</ul>
</body>
首先我们一样连结资料库,并且设置一个空阵列($datas)来放我们查询回来的资料,而$sql则是放我们所要执行的sql语法并利用mysqli_query执行,并将结果存在变数($result)中。
<?php
// 载入db.php来连结资料库
require_once 'db.php';
?>
<h3>sql查询结果</h3>
<?php
// 设置一个空阵列来放资料
$datas = array();
// sql语法存在变数中
$sql = "SELECT `account`, `name` FROM `user` AS userData WHERE `id`=1 ";
// 用mysqli_query方法执行(sql语法)将结果存在变数中
$result = mysqli_query($link,$sql);
接着,利用if判断式,判断资料是否成功获取,如果有,我们可以利用mysqli_num_rows回传资料数量
,做二次确认资料获取正确,如>0才会进入下一步,接着利用while回圈,搭配mysqli_fetch_assoc一次取得结果的一笔值
,跑一次就抓一笔值,一个个放进阵列。
// 如果有资料
if ($result) {
// mysqli_num_rows方法可以回传我们结果总共有几笔资料
if (mysqli_num_rows($result)>0) {
// 取得大於0代表有资料
// while回圈会根据资料数量,决定跑的次数
// mysqli_fetch_assoc方法可取得一笔值
while ($row = mysqli_fetch_assoc($result)) {
// 每跑一次回圈就抓一笔值,最後放进data阵列中
$datas[] = $row;
}
}
// 释放资料库查到的记忆体
mysqli_free_result($result);
}
else {
echo "{$sql} 语法执行失败,错误讯息: " . mysqli_error($link);
}
// 处理完後印出资料
if(!empty($result)){
// 如果结果不为空,就利用print_r方法印出资料
print_r($datas);
}
else {
// 为空表示没资料
echo "查无资料";
}
?>
而我们也可以使用foreach来呈现结果。
而在此处我们须特别注意:
左括号({
)换成冒号(:
),把右括号(}
)分别换成endif、endwhile、endfor、endforeach、endswitch;
Ex:
<?php if( $a<0 ): ?>
小於0 <?php endif; ?>
上面的语句等同於
<?php if( $a<0 ){
?> 小於0 <?php }?>
利用foreach取出row下的资料,account,name...,最後别忘记利用mysqli_close($link)结束资料库的连结。
<h3>foreach列出查询结果</h3>
<div>
<?php if(!empty($datas)): ?>
<ul>
<!-- 资料 as key(下标) => row(资料的row) -->
<?php foreach ($datas as $key => $row) :?>
<li>
第<?php echo($key +1 ); ?> 笔资料,帐号<?php echo $row['account']; ?>,名字 <?php echo $row['name']; ?>
</li>
<?php endforeach; ?>
</ul>
<?php else: ?>
查无资料
<?php endif; ?>
</div>
<!-- 代表结束连线 -->
<?php mysqli_close($link); ?>
结果如下:
再来是我们的插入值,也就是新增资料,这边比较要注意的就是,判断的部分,我们使用mysqli_affected_rows来检查资料库数量的异动
,有的话代表新增成功,并且使用mysqli_insert_id
获取第一笔id,并且输出我们所新增的资料id即可。
<?php
// 载入db.php来连结资料库
require_once 'db.php';
?>
<h3>sql插入结果</h3>
<?php
// sql语法存在变数中
$sql = "INSERT INTO `user` (`account`,`password`, `name`) VALUE ('[email protected]','dd12345','dd') ";
// 用mysqli_query方法执行(sql语法)将结果存在变数中
$result = mysqli_query($link,$sql);
// 如果有异动到资料库数量(更新资料库)
if (mysqli_affected_rows($link)>0) {
// 如果有一笔以上代表有更新
// mysqli_insert_id可以抓到第一笔的id
$new_id= mysqli_insert_id ($link);
echo "新增後的id为 {$new_id} ";
}
elseif(mysqli_affected_rows($link)==0) {
echo "无资料新增";
}
else {
echo "{$sql} 语法执行失败,错误讯息: " . mysqli_error($link);
}
mysqli_close($link);
?>
接着是更新资料,与新增资料大同小异,只有sql语法上的不同。
<?php
// 载入db.php来连结资料库
require_once 'db.php';
?>
<h3>sql更新结果</h3>
<?php
// sql语法存在变数中
$sql = "UPDATE `user` SET `password` = '557gfg', `name`='87dd' WHERE `id`= 6;";
// 用mysqli_query方法执行(sql语法)将结果存在变数中
$result = mysqli_query($link,$sql);
// 如果有异动到资料库数量(更新资料库)
if (mysqli_affected_rows($link)>0) {
echo "资料已更新";
}
elseif(mysqli_affected_rows($link)==0) {
echo "无资料更新";
}
else {
echo "{$sql} 语法执行失败,错误讯息: " . mysqli_error($link);
}
mysqli_close($link);
?>
最後是我们的删除,跟新增、更新大同小异。
<?php
// 载入db.php来连结资料库
require_once 'db.php';
?>
<h3>sql删除结果</h3>
<?php
// sql语法存在变数中
$sql = "DELETE FROM `user` WHERE `id`= 6;";
// 用mysqli_query方法执行(sql语法)将结果存在变数中
$result = mysqli_query($link,$sql);
// 如果有异动到资料库数量(更新资料库)
if (mysqli_affected_rows($link)>0) {
echo "资料已删除";
}
elseif(mysqli_affected_rows($link)==0) {
echo "无资料删除";
}
else {
echo "{$sql} 语法执行失败,错误讯息: " . mysqli_error($link);
}
mysqli_close($link);
?>
<<: [读书笔记] Threading in C# - PART 1: GETTING STARTED
前言 今天的题目在这里: 848. Shifting Letters,被归类为medium,乍看之下...
疫苗在台湾第一次吵得沸沸扬扬时,我也被各种有孔没笋的消息搞得莫名其妙,为了跟人争辩时不要说错话,闲人...
原来我跟javascript没那麽熟... 或者该说我把React想得太简单了呢 昨天原本用fetc...
接续上一篇 在Startup.cs中启用静态资源 於专案新增目录命名为wwwroot(会自动变成地球...
前言 Hi, 我是鱼板伯爵今天要教大家 TextField 这个元件,这可以让使用者用键盘输入文字,...