同样要注意$PATH_INFO的用法。就象我在第一课里讲到的,您可以在HTML代码中的任意位置使用PHP。您也会注意到,表格中的每一个元素都对应着数据库中的一个字段。这种对应关系并不是必须的,这么做只是更直观一些,便于您以后理解这些代码。

还要注意的是,我在Submit按钮中加入了name属性。这样我在程序中可以试探$submit变量是否存在。于是,当网页被再次调用时,我就会知道调用页面时是否已经填写了表格。

我应该指出,您不一定要把上面的网页内容写到PHP程序中,再返过来调用程序本身。您完全可以把显示表格的网页和处理表格的程序分开放在两个网页、三个网页甚至更多网页中,悉听尊便。放在一个文件中只是可以使内容更加紧凑而已。

那好,我们现在加入一些代码,来检查用户在表格中输入的内容。我会把用$HTTP_POST_VARS把所有查询参数变量都显示出来,这只不过是为了证明PHP确实把所有变量都传给了程序。这种方法是一个很有用的调试手段。如果您要想看全部的变量,可以用$GLOBALS。

if ($submit) {

// 处理表格输入

while (list($name, $value) = each($HTTP_POST_VARS)) {

echo "$name = $value
n";

}

} else{

// 显示表格

?>

">

名:
姓:
住址:
职位:

} // end if,if结束

?>

程序现在运行正常,那我们现在就可以取到表格输入的内容,并把它们发送给数据库。

if ($submit) {

// 处理表格输入

$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

$sql = "INSERT INTO employees (first,last,address,position)

VALUES ('$first','$last','$address','$position')";

$result = mysql_query($sql);

echo "Thank you! Information entered.n";

} else{

// 显示表格内容

?>

">

名:
  姓:
住址:
  职位:

} // end if,if结束

?>

您现在已经向数据库中插入数据了。不过还有很多完善的工作要做。如果用户没有填写某一栏怎么办?在需要填入数字的地方填了文字怎么办?或者填错了怎么办?

别担心。我们一步一步来。

第五页 修改数据

在个教程中,我都把要执行的SQL语句放到一个变量($sql)中,然后才用mysql_query()来执行数据库查询。在调试时这是很有用的。如果程序出了什么问题,您随时可以把SQL语句的内容显示出来,检查其中的语法错误。

我们已经学习了如何把数据插入到数据库中。现在我们来学习如何修改数据库中已有的记录。数据的编辑包括两部分:数据显示和通过表格输入把数据返回给数据库,这两部分我们前面都已经讲到了。然而,数据编辑还是有一点点不同,我们必须先在表格中显示出相关的数据。

首先,我们回过头再看看第一课的程序代码,在网页中显示员工姓名。但是这次,我们要把数据显示在表格中。程序看起来象下面这样:

$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

if ($id) {

// 查询数据库

$sql = "SELECT * FROM employees WHERE id=$id";

$result = mysql_query($sql);

$myrow = mysql_fetch_array($result);

?>

">

">

名:

$myrow["first"] ?>">
姓:

$myrow["last"] ?>">
住址:

$myrow["address"] ?>">
职位:

$myrow["position"] ?>">

} else {

// 显示员工列表

$result = mysql_query("SELECT * FROM employees",$db);

while ($myrow = mysql_fetch_array($result)) {

printf("%s %s
n", $PATH_INFO,

$myrow["id"], $myrow["first"], $myrow["last"]);

}

}

?>

我们刚才是把字段内容写入到相应表格元素中的value属性里,这是相应简单的。我们再往前进一步,使程序可以把用户修改过的内容写回数据库去。同样,我们通过Submit按钮来判断是否处理表格输入内容。还要注意,我们用的SQL语句稍稍有些不同。

$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

if ($id) {

if ($submit) {

$sql = "UPDATE employees SET first='$first',last='$last',

address='$address',position='$position' WHERE id=$id";

$result = mysql_query($sql);

echo "谢谢!数据更改完成n";

} else {

// 查询数据库

$sql = "SELECT * FROM employees WHERE id=$id";

$result = mysql_query($sql);

$myrow = mysql_fetch_array($result);

?>

">

">

名:

echo $myrow["first"] ?>">
    姓:

$myrow["last"] ?>">
    住址:

$myrow["address"] ?>">
    职位:

$myrow["position"] ?>">

}

} else {

// 显示员工列表

$result = mysql_query("SELECT * FROM employees",$db);

while ($myrow = mysql_fetch_array($result)) {

printf("%s %s
n", $PATH_INFO,

$myrow["id"], $myrow["first"], $myrow["last"]);

}

}

?>

就是这样。在这个程序中已经包含了我们学过所大多数特性。您也已经看到,我们在一个if()条件判别语句中又加了一个if()语句,来检查多重条件。

下面,我们要把所有东西全都加在一起,写出一个很好的程序来。

第六页 完整的程序

在本课结束前,我们要把所有东西加入到一个程序中,使它具有增加、编辑修改、删除记录的功能。这是前面所有内容的一个延伸,也可以作为极好的复习方法。看看下面的程序。

$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

if ($submit) {

// 如果没有ID,则我们是在增加记录,否则我们是在修改记录

if ($id) {

$sql = "UPDATE employees SET first='$first',last='$last',

address='$address',position='$position' WHERE id=$id";

} else {

$sql = "INSERT INTO employees (first,last,address,position)

VALUES ('$first','$last','$address','$position')";

}

// 向数据库发出SQL命令

$result = mysql_query($sql);

echo "记录修改成功!

";

} elseif ($delete) {

// 删除一条记录

$sql = "DELETE FROM employees WHERE id=$id";

$result = mysql_query($sql);

echo "记录删除成功!

";

} else {

// 如果我们还没有按submit按钮,那么执行下面这部分程序

if (!$id) {

// 如果不是修改状态,则显示员工列表

$result = mysql_query("SELECT * FROM employees",$db);

while ($myrow = mysql_fetch_array($result)) {

printf("%s %s n",

$PATH_INFO, $myrow["id"], $myrow["first"], $myrow["last"]);

printf("(DELETE)<

br>", $PATH_INFO, $myrow["id"]);

}

}

?>

">ADD A RECORD

">

if ($id) {

// 我们是在编辑修改状态,因些选择一条记录

$sql = "SELECT * FROM employees WHERE id=$id";

$result = mysql_query($sql);

$myrow = mysql_fetch_array($result);

$id = $myrow["id"];

$first = $myrow["first"];

$last = $myrow["last"];

$address = $myrow["address"];

$position = $myrow["position"];

// 显示id,供用户编辑修改

?>

">

}

?>

名:">
姓:">
住址:">
职位:">

}

?>

这段程序看起来很复杂,但实际上并不难。程序主要有三个部分。第一个if()语句检查我们是否已经按下了那个“输入信息”的数据提交按钮。如果是,程序再检查$id是否存在。如果不存在,那我们就是在增加记录状态,否则,我们是在修改记录状态。

接下来我们检查变量$delete是否存在。如果存在,我们是要删除记录。注意,第一个if()语句检查的是用POST方法发送来的变量,而这一次我们检查的是GET方法中传递过来的变量。

最后,程序默认的动作是显示员工列表和表格。同样,我们要检查变量$id是否存在。如果存在,我们就根据它的值检索出相应的记录显示出来。否则,我们会显示一个空的表格。

现在,我们已经把所学的东西全部都放在一个程序里头了。我们用到了while()循环,用到了if()语句,并且执行了全部的SQL基本操作 - SELECT、INSERT、UPDATE以及DELETE。另外,我们也知道如何在不同的网页之间通过URL和表格输入来互相传递信息。

在第三课里,我们要学习如何为网页增加智能化处理能力。

php mysql while循环,PHP_MySQL教程-第二天while循环与数据库操作第2/2页相关推荐

  1. 命令行客户端MySQL基本命令的使用(登录、登出、数据库操作的SQL语句、表结构的SQL语句、表数据操作的SQL语句)

    1. 登录和登出数据库 登录数据库: 输入下面命令: mysql -uroot -p 说明: -u 后面是登录的用户名  [写成-u root也是可以的] -p 后面是登录密码, 如果不填写, 回车之 ...

  2. php连接mysql开发环境_PHP开发环境搭建及常用的数据库操作

    PHP开发环境搭建及常用的数据库操作 常见的web服务器: httpd(Apache).nginx+PHP Tomcat:jsp+html win:IIS 客户端:IE.firefox.chrome. ...

  3. mysql的过程返回执行成功与失败_进行数据库操作的时候,操作错误或者失败,但是不报错...

    首先需要注意的是: PHP代码的运行错误 和 PHP与MySQL中交互过程中,MySQL中发生的错误,并不一定是同步的. Case 1:使用PDO,没有设置PDO::ATTR_ERRMODE PDO在 ...

  4. 循环神经网络教程第二部分-用python,numpy,theano实现一个RNN

    作者:徐志强 链接:https://zhuanlan.zhihu.com/p/22289383 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 在本部分,我们将会从头 ...

  5. python多重循环break_Python教程:跳出多层循环for、while

    for跳出多层循环 break_flag = False for i in range(10): print("爷爷层",i) for j in range(10): print( ...

  6. dz mysql日志清理_Discuz教程:如何准确的清理数据库

    随着网站的发展占用的数据库是非常大的而且成本也越来越高如何清理数据库的无用数据是非常有效的减少成本的方法.清理周期不要太长也不需要太短的时间(特殊情况:网站被灌水需要做好防护并且随时清理).一定要提前 ...

  7. SQL SERVER2000教程-第二章-创建和管理数据库 第六节 压缩数据库

    有时,人们可能为预期有一定程度活动的数据库分配了太多的空间,当意识到分配了太多空间时,可能决 定压缩分配的空间大小.SQLSERVER提供三种可以压缩数据库大小的方法,autoshrink数据库选项, ...

  8. lnp和mysql分开安装_毕业设计之LNP+DISCUZ +分离的数据库操作

    环境介绍: CentOS6.9最小化安装 https://nginx.org/download/nginx-1.16.1.tar.gz https://www.php.net/distribution ...

  9. LINQ学习之旅——第二站LTQ之标准数据库操作(增查删改)

    今天要讲解主要内容是关于LINQ TO SQL中的标准数据库操作:插入(Insert).查询(Select).更新(Update)以及删除(Delete),凡是涉及到数据库方面的都会使用这些操作.而这 ...

最新文章

  1. Windows下安装部署DBeaver连接clickhouse
  2. 技术分享 | jaeger链路日志实现
  3. 飞机是由塑料杆的飞鸽传书
  4. c语言一维数组定义可用字母吗,C语言一维数组的定义和引用
  5. 基于JAVA+SpringMVC+MYSQL的便利店运营管理系统
  6. mshtml 解析html c,使用MSHTML解析HTML代码
  7. zzuli oj 1077
  8. Minecraft mod制作简易教程(二)——Mod配置
  9. 【机器学习】6:K-近邻(KNN)算法实现手写数字识别的三种方法
  10. java获取中文的拼音以及获取中文拼音的首字母
  11. 程序员,要不要考软考高级职称?
  12. python新版个人所得税_Python 小案例 计算个人所得税
  13. 用python :输入 20 个整数,统计其中正数、负数和零的个数
  14. 哈工大的计算机科学与技术三个校区区别,哈尔滨工业大学计算学部研招拟录三地比较,深圳校区初试分数最高...
  15. 从孙子兵法理解围棋大龙攻杀的要诀: 攻守双方口诀
  16. 70张让你大开眼界的照片(配…
  17. 深入剖析Android中最简单的数据存储方式:SharedPreferences
  18. 关于51单片机按键防抖的一个思考
  19. Unity | Unity发布IOS上架的一系列流程总结
  20. 基于串级PID的平衡小车

热门文章

  1. 今天的男生代表甲方的飞鸽传书
  2. 我们还很时尚freeeim
  3. SEOer将灭绝,尽快辅佐“百毒”对手
  4. 请假一天,回粤西老家买了套房
  5. 情人节找个程序员当男朋友,一般都不会太差
  6. 再见了,余!额!宝!!!
  7. apache2.4.39 php,win7 配置AMP环境(apache2.4.39 + php7.1.28)
  8. 汉字为什么能流传至今_女皇武则天自创18个汉字,有17个被废除了,只有这1个字流传至今...
  9. hive 导出json格式 文件_hive中创建hive-json格式的表及查询
  10. 使用OpenCV可视化Intel Realsensen D435 深度图为彩色图