搜索
首页后端开发php教程php学习正式起航(6)
php学习正式起航(6)Dec 28, 2016 am 09:23 AM
php

现在讲讲php的错误处理

<?php
$file=fopen("1.txt","r");
?>

如果文件不存在 系统会直接报错误
用die就可以自己写错误信息 die是死亡的意思,表示错误

为了避免用户获得类似上面的错误消息,我们在访问文件之前检测该文件是否存在

<?php
if(!file_exists("1.txt"))
{
die("File not found");
}
else
{
$file=fopen("1.txt","r");
}
?>

如果文件不存在,会打印File not found,而不是系统冒出的错误


其实php的错误处理远不止这些,后面还有异常等
放在以后在说吧

现在开始重头戏,终于要用php对mysql数据库进行操作了

首先是连接数据库

<?php
$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;);
if (!$link) {
die(&#39;Could not connect to MySQL: &#39; . mysql_error());
}
echo &#39;Connection OK&#39;; mysql_close($link);
?>

$link 这个又是一个资源变量,表示数据库连接状态,你可以试着打印看看会出现什么
mysql_connect函数就是连接mysql数据库啦
有3个函数 分别是服务器地址 数据库用户名 数据库用户密码
mysql_error函数可以知道连接错误原因
mysql_close是关闭数据库连接

现在先创建一个数据库
create database test;
然后创建一个表

470.jpg

超级简单吧

进入phpmyadmin看看

471.jpg

472.jpg

首先我们插入几条数据看看

现在会连接mysql数据库了,接着我们要在mysql其中一个数据库里插入数据了

<?php
$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;);
if (!$link) {
die(&#39;Could not connect to MySQL: &#39; . mysql_error());
}
mysql_select_db(&#39;test&#39;,$link);
mysql_query("insert into user (name,age) values (&#39;harry&#39;,15)",$link);
mysql_close($link);
?>

mysql_select_db就是选择数据库的函数
mysql_query就是执行sql语句的函数,任何sql都可执行,包括创建数据库和表
两个函数的第2个参数可以省略
mysql_select_db('test');
mysql_query("insert into user (name,age) values ('harry',15)");
如果第2个参数没有指定连接标识符,则使用上一个打开的连接。如果没有打开的连接,将无参数调用 mysql_connect() 来尝试打开一个并使用之

现在看看是否能插入成功

473.jpg

ok 已经插入了

现在我们用表单形式插入数据

<html>
<body> <form action="" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form> </body>
</html>
<?php
$name=$_POST[&#39;name&#39;];
$age=$_POST[&#39;age&#39;];
if(isset($name)&&isset($age))
{
$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;);
if (!$link) {
die(&#39;Could not connect to MySQL: &#39; . mysql_error());
}
mysql_select_db(&#39;test&#39;);
$sql="insert into user (name,age) values (&#39;$name&#39;,$age)";
if(mysql_query($sql))
echo "Insert Success!";
else
echo "Insert Fail!".mysql_error();
mysql_close($link);
}
?>

mysql_query() 在执行sql语句成功时返回 TRUE,出错时返回 FALSE

现在来显示数据吧

<html>
<body> <form action="" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
<?php
//数据库连接
$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;);
if (!$link) {
die(&#39;Could not connect to MySQL: &#39; . mysql_error());
}
mysql_select_db(&#39;test&#39;); //插入
$name=$_POST[&#39;name&#39;];
$age=$_POST[&#39;age&#39;];
if(isset($name)&&isset($age))
{ $sql="insert into user (name,age) values (&#39;$name&#39;,$age)";
if(mysql_query($sql))
echo "Insert Success!";
else
echo "Insert Fail!".mysql_error(); }
//查询
$sql="select * from user";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo "<table>";
echo "<tr>";
echo "<td>" . $row[&#39;id&#39;] . "</td>";
echo "<td>" . $row[&#39;name&#39;] . "</td>";
echo "<td>" . $row[&#39;age&#39;] . "</td>";
echo "</tr>";
echo "</table>";
} mysql_free_result($result);
mysql_close($link); ?>
</body>
</html>


$result=mysql_query($sql); $result也是一个资源变量,当mysql_query执行查询sql语句的时候,其返回结果就不再是true和false ,而是个结果集,你可以想象就是mysql_query查询的结果返回一张表给了$result,$result就是一张表(结果集)

mysql_fetch_array函数则是专门处理结果集的,从结果集中取得一行作为关联数组,或数字数组,或二者兼有,mysql_query($sql); 其本身就是结果集了
为什么要循环呢,因为mysql_fetch_array一次只能在结果集(表)取一行数据
然后把这一行数据以一维关联数组的形式给$row,$row就是一维关联数组
mysql_fetch_array有个指针指着每一行,每当执行完这个函数的时候,指针就自动指向下一行,如果当函数再次被执行,就能获取到这行的数据,直到最后一行,指针就会指向空的,所以循环也会因为空而结束
不要以为$row是二维数组,它一直是一维,而且每循环一次就被重新赋值一次
有人可能怀疑,数组也能做为循环条件?可以的
$a=array(1,2)
while($a)
这样是能够循环的,只不过是死循环
因为while括号里只要不为0的东东都能循环


$row['name'] 就个就是从数组里取值了,关联数组还记得吧
其实用数组下标也可以的,之前没说,其实关联数组也具有普通数组的特性,且更强大
所以这是可以的

echo "<td>" . $row[0] . "</td>";
echo "<td>" . $row[1] . "</td>";
echo "<td>" . $row[2] . "</td>";

mysql_free_result是释放资源
不是必须使用,仅需要在考虑到返回很大的结果集时会占用多少内存时调用。在脚本结束后所有关联的内存都会被自动释放的


另外mysql_fetch_row也可以查询结果,不过跟mysql_fetch_array比,弱爆了,这里只是介绍下曾经有这么个东西。。。

//查询

$sql="select * from user";
$result=mysql_query($sql);
while($row = mysql_fetch_row($result))
{
echo "";
echo "";
echo "<td>" . $row[0] . "</td>";
echo "<td>" . $row[1] . "</td>";
echo "<td>" . $row[2] . "</td>";
echo "";
echo "
"; }

mysql_fetch_row() 从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中
则row不再是关联数组而是普通数组,所以只能用数组下标


下面说说几个常用的数据显示函数
int mysql_num_rows ( resource $result )
mysql_num_rows() 返回结果集中行的数目。此命令仅对 SELECT 语句有效
int mysql_num_fields ( resource $result )
mysql_num_fields() 返回结果集中字段的数目
int mysql_insert_id ([ resource $link_identifier ] )
mysql_insert_id() 返回给定的 link_identifier 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号

重新写下

 
 
Name: Age:
"; echo ""; echo "<td>" . $row[0] . "</td>"; echo "<td>" . $row[1] . "</td>"; echo "<td>" . $row[2] . "</td>"; echo ""; echo ""; } echo "总共".mysql_num_rows($result)."记录
"; echo "每行".mysql_num_fields($result)."字段"; mysql_free_result($result); mysql_close($link); ?>

header("Content-Type:text/html;charset=gbk"); 这个是表明文件编码格式,显示中文需要这样
error_reporting(0); 屏蔽一切系统提示的注意,警告,和错误

现在完成 修改和删除部分

<?php
header("Content-Type:text/html;charset=gbk");
error_reporting(0);
?> <html>
<body> <form action="" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form> <?php
//数据库连接
$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;);
if (!$link) {
die(&#39;Could not connect to MySQL: &#39; . mysql_error());
}
mysql_select_db(&#39;test&#39;);
//插入
$name=$_POST[&#39;name&#39;];
$age=$_POST[&#39;age&#39;];
if(isset($name)&&isset($age))
{ $sql="insert into user (name,age) values (&#39;$name&#39;,$age)";
if(mysql_query($sql))
echo "Insert Success!";
else
echo "Insert Fail!".mysql_error(); } /
/查询
$sql="select * from user";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result))
{
?>
<form action="" method="post">
ID: <?=$row[&#39;id&#39;]?>
Name: <input type="text" name="_name" value="<?=$row[&#39;name&#39;]?>"/>
Age: <input type="text" name="_age" value="<?=$row[&#39;age&#39;]?>" />
<input type="hidden" name="id" value="<?=$row[&#39;id&#39;]?>" />
<input type="submit" value="修改"/>
<a href="index.php?uid=<?=$row[&#39;id&#39;]?>">删除</a>
</form> <?php
} echo "总共".mysql_num_rows($result)."记录<br/>";
echo "每行".mysql_num_fields($result)."字段";
//修改
$name=$_POST[&#39;_name&#39;];
$age=$_POST[&#39;_age&#39;];
$id=$_POST[&#39;id&#39;];
if(isset($name)&&isset($age)&&isset($id))
{ $sql="update user set name=&#39;$name&#39;,age=&#39;$age&#39; where id=$id";
if(mysql_query($sql))
header("location:index.php");
else
echo "Update Fail!".mysql_error(); }
//删除
$uid=$_GET[&#39;uid&#39;];
if(isset($uid))
{ $sql="delete from user where id=$uid";
if(mysql_query($sql))
header("location:index.php");
else
echo "Delete Fail!".mysql_error(); }
mysql_close($link); ?>
</body>
</html>


至此,php对mysql数据库的增删改查操作就全在这一个页面了,灰常的简单

加了个简单的分页,超简单的。。。。暂时就不讲解怎么个来的了,加了简单的注释,大家应该能看懂代码

<?php
header("Content-Type:text/html;charset=gbk");
error_reporting(0);
?> <html>
<body> <form action="" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form> <?php
//数据库连接
$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;);
if (!$link) {
die(&#39;Could not connect to MySQL: &#39; . mysql_error());
}
mysql_select_db(&#39;test&#39;); //插入
$name=$_POST[&#39;name&#39;];
$age=$_POST[&#39;age&#39;];
if(isset($name)&&isset($age))
{ $sql="insert into user (name,age) values (&#39;$name&#39;,$age)";
if(mysql_query($sql))
echo "Insert Success!";
else
echo "Insert Fail!".mysql_error(); } //分页查询
if(isset($_GET[&#39;pager&#39;]))
$pager=($_GET[&#39;pager&#39;]-1)*5;
else
$pager=0; $sql="select * from user";
$result=mysql_query($sql);
$num=mysql_num_rows($result); //总共记录数
$page=ceil($num/5); //总共多少页 这里每页5条记录 ceil函数四舍五入的。。
for($i=1;$i<=$page;$i++)
echo "<a href=&#39;index.php?pager=".$i."&#39;>".$i."</a>"; $
sql="select * from user limit $pager,5";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result))
{
?>
<form action="" method="post">
ID: <?=$row[&#39;id&#39;]?>
Name: <input type="text" name="_name" value="<?=$row[&#39;name&#39;]?>"/>
Age: <input type="text" name="_age" value="<?=$row[&#39;age&#39;]?>" />
<input type="hidden" name="id" value="<?=$row[&#39;id&#39;]?>" />
<input type="submit" value="修改"/>
<a href="index.php?uid=<?=$row[&#39;id&#39;]?>">删除</a>
</form> <?php
} echo "总共".$num."记录<br/>";
echo "每行".mysql_num_fields($result)."字段"; //修改
$name=$_POST[&#39;_name&#39;];
$age=$_POST[&#39;_age&#39;];
$id=$_POST[&#39;id&#39;];
if(isset($name)&&isset($age)&&isset($id))
{ $sql="update user set name=&#39;$name&#39;,age=&#39;$age&#39; where id=$id";
if(mysql_query($sql))
header("location:index.php");
else
echo "Update Fail!".mysql_error(); }
//删除
$uid=$_GET[&#39;uid&#39;];
if(isset($uid))
{ $sql="delete from user where id=$uid";
if(mysql_query($sql))
header("location:index.php");
else
echo "Delete Fail!".mysql_error(); }
mysql_close($link); ?>
</body>
</html>

暂时先到这里了
php后面内容还有很多,还有对象等知识,光数据操作就还有面向对象的

 以上就是php学习正式起航(6)的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace("&nbsp;","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么查找字符串是第几位php怎么查找字符串是第几位Apr 22, 2022 pm 06:48 PM

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境