|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
看看西,人家这个编论坛,那个CMS,还有那啥CRM,我啥时候写一个呢?mysql|数据 你应当对 HTML 表单对照懂得了,上面的一段代码是一个很复杂的 HTML 表单:
< html>
< body>
< form action=submitform.php3 method=GET>
姓 : < input type=text name=first_name size=25 maxlength=25>
名 : < input type=text name=last_name size=25 maxlength=25>
< p>
< input type=submit>
< /form>
< /body>
< /html>
当你输出数据,并按下 submit 按钮后,这个表单将把数据发送到 submitform.php3 。再由这个 PHP 剧本来处置收到的数据,上面就是 submitform.php3 的代码:
< html>
< body>
< ?php
mysql_connect (localhost, username, password);
mysql_select_db (dbname);
mysql_query ("INSERT INTO tablename (first_name, last_name)
VALUES ('$first_name', '$last_name')
");
print ($first_name);
print (" ");
print ($last_name);
print ("< p>");
print (" 感激填写注册表 ");
?>
< /body>
< /html>
在代码的第三行中的 "username" 和 "password" 分离代表你上岸 MySQL 数据库的账号和暗码。在第五行中的 "dbname" 暗示 MySQL 数据库的称号。在第十三行中的 "tablename" 是数据库中的一个数据表的称号。
当你按下 submit 以后,可以看到你输出的名字被显示在一个新的页面中。再看一看阅读器的 URL 栏,它的内容应当是像如许的:
… /submitform.php3?first_name=Fred&last_name=Flintstone
由于咱们用到的是表单 GET 办法,因而数据是经由过程 URL 来传送到 submitform.php3 的。明显, GET 办法是有局限性的,当要传递的内容良多时,就不克不及用 GET 了,只能用 POST 办法。但不论用甚么办法,当数据传送完成后, PHP 主动的为每个表单中的字段创立一个和他们的名字(表单的 name 属性)不异的变量。
PHP 变量都已用一个美元符号开首的,如许,在 submitform.php3 剧本处置的过程当中,就会有 $first_name 和 $last_name 这两个变量了,变量的内容就是你输出的内容。
咱们来反省一下你输出的名字是不是真的被输出到数据库中了。启动 MySQL, 在 mysql> 提醒符下输出:
mysql> select * from tablename;
你应当可以失掉一个表,内容就是你方才输出的了:
+------------+------------+
| first_name | last_name |
+------------+------------+
| 柳 | 如风
+------------+------------+
1 rows in set (0.00 sec)
咱们再来剖析一下 submitform.php3 是若何任务的:
剧本的入手下手两行是:
mysql_connect (localhost, username, password);
mysql_select_db (dbname);
这两个函数挪用用来翻开 MySQL 数据库,详细的参数的寄义方才已说过了。
上面的一行是履行一个 SQL 语句 :
mysql_query ("INSERT INTO tablename (first_name, last_name)
VALUES ('$first_name', '$last_name')
");
mysql_query 函数就是用来对选定的数据库履行一个 SQL 查询。你可以在 mysql_query 函数中履行任何的 SQL 语句。被履行的 SQL 语句必需作为一个字符串用双引号括起来,在个中的变量要用单引号括起来。
有一个要注重的工作: MySQL 的语句要用一个分号 (;) 停止,一行 PHP 代码一样也是如许,然而在 PHP 剧本中的 MySQL 语句是不克不及有分号的。也就是说,当你在 mysql> 的提醒符下输出 MySQL 号令,你应当加上分号:
INSERT INTO tablename (first_name, last_name)
VALUES ('$first_name', '$last_name');
然而假如这个号令呈现在 PHP 剧本中,就要去失落谁人分号了。之所以如许做,是由于有的语句,如 SELECT 和 INSERT ,有无分号都可以任务。然而还有一些语句,如 UPDATE ,加上分号就不可了。为了不费事,记住这条划定规矩就行了。
PHP 若何从 MySQL 中提取数据
如今咱们创立别的一个 HTML 表单来履行这个义务:
< html>
< body>
< form action=searchform.php3 method=GET>
请输出您的查询内容 :
< p>
姓: < input type=text name=first_name size=25 maxlength=25>
< p>
名 : < input type=text name=last_name size=25 maxlength=25>
< p>
< input type=submit>
< /form>
< /body>
< /html>
一样,还要有一个 php 剧本来处置这个表单,咱们再创立一个 searchform.php3 文件:
< html>
< body>
< ?php
mysql_connect (localhost, username, password);
mysql_select_db (dbname);
if ($first_name == "")
{$first_name = '%';}
if ($last_name == "")
{$last_name = '%';}
$result = mysql_query ("SELECT * FROM tablename
WHERE first_name LIKE '$first_name%'
AND last_name LIKE '$last_name%'
");
if ($row = mysql_fetch_array($result)) {
do {
print $row["first_name"];
print (" ");
print $row["last_name"];
print ("< p>");
} while($row = mysql_fetch_array($result));
} else {print " 对不起,再咱们的数据库中,没有找到合适的记载。 ";}
?>
< /body>
< /html>
当你在表单中输出了要检索的内容,再按下 SUBMIT 按钮后,就会进入一个新的页面,个中列出了一切婚配的搜刮了局。上面再来看看这段剧本究竟是如何完成搜刮义务的。
后面的几条语句和下面讲到的一样,先是创立数据库毗连,然后选定命据库和数据表,这些是每一个数据库使用所必须的。然后有如许的几条语句:
if ($first_name == "")
{$first_name = '%';}
if ($last_name == "")
{$last_name = '%';}
这几行用来反省表单的各字段是不是为空。要注重的是那两个等号,由于 PHP 的语法大多源于 C 言语,这儿等号的用法也同 C 一样:一个等号是赋值号,两个等号才代表逻辑等于。还应当注重的是:当 IF 后前提为真时,前面要履行的语句是放在“ { ”和“ } ”中的,而且个中的每条语句前面都要加上分号暗示语句停止。
百分号 % 是 SQL 言语的通配符,了解了之一点后,就该晓得这两行的意思了:假如“ FIRST_NAME ”字段为空,那末将列出一切的 FIRST_NAME 。前面的两句也是一样的意思。
$result = mysql_query ("SELECT * FROM tablename
WHERE first_name LIKE '$first_name%'
AND last_name LIKE '$last_name%'"
");
这一行完成了搜刮的大局部任务。当 mysql_query 函数完成一个查询后,它前往一个整数标记。
查询从一切的纪录当选出那些 first_name 列和 $first_name 变量不异,而且 last_name 列和 $last_name 变量值也不异的纪录,放到暂存的纪录集中,并用前往的整数作为这个纪录集的标记。
if ($row = mysql_fetch_array($result)) {
do {
print $row["first_name"];
print (" ");
print $row["last_name"];
print ("< p>");
} while($row = mysql_fetch_array($result));
} else {print " 对不起,再咱们的数据库中,没有找到合适的记载。 ";}
这是最初的一步,就是显示局部了。 mysql_fetch_array 函数先提掏出查询了局的第一行的内容,在用 PRINT 语句显示出来。这个函数的参数就是 mysql_query 函数前往的整数标记。而 mysql_fetch_array 履行胜利后,纪录集指针会主动下移,如许当再一次履行 mysql_fetch_array 时,失掉的就是下一行记载的内容了。
数组变量 $row 被 mysql_fetch_array 函数创立并用查询的了局字段来填充,数组的每个份量对应于查询了局的每个字段。
假如有合适的记载被找到,变量 $row 不会空,这时候就会履行花括号中的语句:
do {
print $row["first_name"];
print (" ");
print $row["last_name"];
print ("< p>");
} while($row = mysql_fetch_array($result));
这是一个 do … while 轮回。与 while 轮回分歧的是,它是先履行一遍轮回轮回体,然后在反省轮回前提是不是知足。因为已晓得在记载集不为空的情形下,一定最少要把轮回体履行一遍,所以应当用到的是 do … while 而不是 while 轮回了。在花括号中的就是要履行的轮回体:
print $row["first_name"];
print (" ");
print $row["last_name"];
print ("< p>");
然后就是反省 while 前提是不是知足。 Mysql_fetch_array 函数再次被挪用,来失掉以后记载的内容。这个进程一向轮回,当没有下一条记载存在时, mysql_fetch_array 前往 false ,轮回停止,记载集也就被完整的遍历了一次。
mysql_fetch_array($result) 前往的数组,不但可以用字段名来挪用,也能够像普通的数组那样,用下标来援用数组的各个份量。如许,下面的代码还可以写成如许:
print $row[0];
print (" ");
print $row[1];
print ("< p>");
咱们还可以用 echo 函数来把这四条语句写的紧凑一些:
echo $row[0], " ", $row[1], "< p>";
当没有任何婚配的记载被找到时,在 $row 中就不会有任何内容,这时候就会挪用 if 语句的 else 子句了:
else {print " 对不起,再咱们的数据库中,没有找到合适的记载。 ";}
大部分语言的基础,不是说c有多好,而是c相对起手容易学,让你认为这个是编程语言, |
|