|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
刚开始因为习惯于ASP格式的写法,总是在这些方面出现问题,自己还总是找不到问题所在,这就提醒了自己,在写代码的时候一定要认真,不能粗心地老是少个“;”或者字母大小写不分,要不然很可能找半天都找不到错误。mysql|基本教程 HTML 和 PHP 、MySQL 的交互
为何要用到数据库?
World Wide Web (WWW) 不单单是一个供应信息的中央。假如你有甚么器材,作一个网站,一样可以和全球的人一同分享。然而,这并非一件很轻易的事。当网站越做越大时,你能够会碰到如许的成绩:
网站包括了太多的器材,使得会见者不克不及够很快得失掉他们想要的器材。这个成绩在某种水平上对一个网站而言是致命的。
会见者想要向你供应信息,并且这些信息必需保留上去以备后用。
下面的两个成绩,都可以经由过程数据库来处理!
在 WWW 的世界中,数据库无处不在。大如 Yahoo! , Amazon , eBay ,小到一个复杂的留言板,都可以看到数据库的用武之地。乃至可以说,数据库是一切初级使用的基本。
为何要用 PHP 和 MYSQL
就我所知,几近一切的次要的贸易网站数据库都是基于 SQL 的。个中最为盛行的能够得算 Oracle 了。它很有威力,固然,也价钱不菲。 SQL 不是一个使用法式,而是一种言语,它是 Structured Query Language (布局化查询言语)的简写,用来对数据库停止操作和查询的。
在比来的几年中,一些公司开辟出了“开放代码”的 SQL 使用法式,个中最有名的能够算得上 MySQL 了。它不单单是收费的,关于普通的中小型数据库使用,它的体现其实不比 Oracle 减色。
要在一个网站上运转 MySQL ,你需求一种剧本言语来和数据库停止交互。在曩昔, Perl 是最盛行的。但如今看起来 PHP 仿佛更加精彩一些。不要问我他们之间有甚么区分 ?? 曩昔我用 Perl ,它也任务的很好,然而如今仿佛每一个人都喜好用 PHP 了。它的盛行固然有它的事理。
需求的软件
这局部的内容, ChinaByte 收集学院前些时分的文章中已有引见。读者可以参考《为 win98 设置当地 PHP 开辟》一文。这儿不再具体引见。
HTML 和 PHP
咱们来看看 PHP 是若何任务的。看看上面的这段代码:
< html>
< body>
< ?php
print "Hello, world.";
?>
< /body>
< /html>
当恳求这个页面的时分,它将在阅读器中显示“ Hello , world ”。
可以看到, PHP 剧本是嵌入在 HTML 文件中的。它以“ < ? ”入手下手,以“ ?> ”停止。不但如斯,咱们乃至还可以把 HTML 标签也嵌入在 PHP 剧本中:
< ?php
print "< html>";
print "< body>";
print "Hello, world.";
print "< /body>";
print "< /html>";
?>
两种办法异曲同工,后果是一样的。然而在一些出格的情形下,选择个中的一种要更加便利一些。
PHP 的 prints 语句
PHP 和 HTML 最复杂的交互是经由过程 print 语句来完成的:
< ?php
print "Hello, world.";
?>
print 是最为复杂也利用的最多的函数,用来把一些文本显示在阅读器窗口中, echo 函数和 print 相相似,然而你可以用“,”号来分隔多个要显示得内容,这在夹杂字符串常量和变量的显示时要便利一些。
还有一个 printf 函数,用来格局化数字的输入。可以把一个数作为整数,或用迷信计数法显示出来。
在这几个函数中,圆括号的利用与否是分歧的:
echo 必定不克不及带有圆括号
printf 却必定要有
print 无关紧要
要显示一个字符串或一个数字很复杂,只需把变量名或常量跟在 print 语句前面就能够了。然而,假如要显示一个数组,是否是也是写成如许呢:
print $myarray;
它输入的了局将是“ Array ”, PHP 告知你 $myarray 是一个数组。这在你拿禁绝一个变量是不是是数组时会有一些用途,然而如今咱们但愿看到的是数组的内容。
你可以用 implode 函数来把一个数组转换成字符串。它包括两个参数,第一个是数组变量名,第二个是数组内容的分隔符。当转换完成以后,数组的内容被分隔符接洽起来构成一个字符串:
$implodedarray = implode ($myarray, ", ");
print $implodedarray;
还可以用 array_walk 函数来完成数组的显示。这个函数对数组的每一个内容履行统一个函数操作。例如:
function printelement ($element)
{
print ("$element< p>");
}
array_walk($myarray, "printelement");
PHP 若何向 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["fir
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 " 对不起,再咱们的数据库中,没有找到合适的记载。 ";}
反省查询是不是正常任务
你的那些 SELECT , DELETE 或其它的查询是不是可以正常任务呢?这是必需要弄清晰的,而且,万万不要等闲的就下结论。
反省一个 INSERT 查询绝对的复杂一些:
$result = mysql_query ("INSERT INTO tablename (first_name, last_name)
VALUES ('$first_name', '$last_name')
");
if(!$result)
{
echo "< b>INSERT 查询掉败 :< /b> ", mysql_error();
exit;
}
然而这个反省的办法关于 SELECT 查询是行欠亨的,这时候,应当如许作:
$selectresult = mysql_query ("SELECT * FROM tablename
WHERE first_name = '$first_name'
AND last_name = '$last_name'
");
if (mysql_num_rows($selectresult) == 1)
{
print "SELECT 查询胜利。 ";
}
elseif (mysql_num_rows($selectresult) == 0)
{
print "SELECT 查询掉败。 ";
exit;
}
而关于 DELETE 查询,就应当是如许了:
$deleteresult = mysql_query ("DELETE FROM tablename
WHERE first_name = '$first_name'
AND last_name = '$last_name'
");
if (mysql_affected_rows($deleteresult) == 1)
{
print "DELETE 查询胜利 ";
}
elseif (mysql_affected_rows($deleteresult) != 1)
{
print "DELETE 查询掉败 ";
exit;
}
说说这一个月左右的学习情况和心得吧!我个人认为,既然决定了去做一件事,那就要以认真的态度去对待!既然决定来学习了,那不管当初是抱着怎样的心态来到这个培训班的,都要让自己认真的投入到学习中。 |
|