- 论坛徽章:
- 0
|
14 使用MySQL数据库
PHP中与MySQL相关的常用函数
1、int mysql_affected_rows ( [resource $link_identifier] ),
取得前一次 MySQL 操作所影响的记录行数,返回最近一次与 link_identifier 关联的 INSERT,UPDATE 或 DELETE 查询所影响的记录行数。
2、关闭MySQL连接:bool mysql_close ( [resource $link_identifier] )
关闭指定的连接标识所关联的到 MySQL 服务器的非持久连接。如果没有指定 link_identifier,则关闭上一个打开的连接。
3、打开一个到MySQL服务器的连接:resource mysql_connect ( [string $server [, string $username [, string $password [, bool $new_link [, int $client_flags]]]]] ),
打开或重复使用一个到 MySQL 服务器的连接。server:MySQL 服务器。username:用户名。password:密码。默认值是空密码。new_link: ,client_flags:参数。
4、新建一个MySQL数据库:
bool mysql_create_db ( string $database name [, resource $link_identifier] )
尝试在指定的连接标识所关联的服务器上建立一个新数据库。 database_name:要创建的数据库名。 link_identifier:MySQL 的连接标识符。
5、移动内部结果的指针:bool mysql_data_seek ( resource $result, int $row_number )
将指定的结果标识所关联的 MySQL 结果内部的行指针移动到指定的行号。result:返回类型为 resource 的结果集。该结果集从 mysql_query() 的调用中得到。row_number:想要设定的新的结果集指针的行数。
6、取得结果数据:string mysql_db_name ( resource $result, int $row [, mixed $field] )
取得 mysql_list_dbs() 调用所返回的数据库名。 result:mysql_list_dbs() 调用所返回的结果指针。 row:结果集中的行号。 field:字段名。
7、发送一条MySQL查询:resource mysql_db_query ( string $database, string $query [, resource $ link_identifier ] )
根据查询结果返回一个MySQL结果资源号,出错时返回FALSE。本函数会对 INSERT/UPDATE/DELETE 查询返回 TRUE/FALSE 来指示成功或失败。
8、丢弃(删除)一个MySQL数据库:
bool mysql_drop_db ( string $database_name [, resource $ link_identifier ] )
尝试丢弃(删除)指定连接标识所关联的服务器上的一整个数据库。如果成功则返回 TRUE,失败则返回 FALSE。
不提倡使用此函数。最好用mysql_query()提交一条 SQL DROP DATABASE 语句来替代。
9、int mysql_errno ( [resource $link_identifier] ),如果没有出错则返回 0(零)。
10、string mysql_error ( [resource $link_identifier] ),
返回上一个 MySQL 函数的错误文本,如果没有出错则返回 ''(空字符串)。
11、string mysql_escape_string ( string $unescaped_string ),
本函数将unescaped_string转义,使之可以安全用于mysql_query()。并不转义 % 和 _。
12、array mysql_fetch_array ( resource $result [, int $ result_type ] ),返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE。 mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。
13、
……
对数据库操作
1、连接MySQL数据库:mysql_connect()
?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
或者:$link=mysql_connect($db_host,$db_user,$db_pass)or die("不能连接到服务器".mysql_error());
?>
2、显示可用数据库:mysql_list_dbs()
?php
$db_list=mysql_list_dbs($link);
while($db=mysql_fetch_object($db_list)) //通过循环遍历返回的结果集
{ echo $db->Database; //显示数据库名,注意大小写
echo "";
}
?>
object mysql_fetch_object ( resource $result ),
返回根据所取得的行生成的对象,如果没有更多行则返回 FALSE。
3、在服务器上创建新的数据库:mysql_create_db()
?php
mysql_create_db("database1",$link); 已废弃!
最好使用mysql_query()发送SQL语句创建:
$sql="CREATE DATABASE data2"; //创建数据库的SQL语句
mysql_query($sql,$link); //发送SQL语句
?>
4、在选定数据库里创建表:
?php
mysql_select_db($db_name,$link); //选择相应的数据库,这里选择test库
//下面的$sql就为创建表的SQL语句
$sql="create table test1(id int(5) not null auto_increment primary key,
name varchar(12) not null,
mail varchar(30) not null,
phone varchar(14) not null,
address varchar(30) not null)";
if(mysql_query($sql,$link)) //发送SQL语句执行创建表的操作
?>
注意:1)在一对圆括号里列出完整的字段清单。2)字段名间用逗号隔开,逗号后要加一个空格。3)最后一个字段名不用逗号。4)所有的SQL语句以分号“;”结束。
$table_list=mysql_list_tables($db_name,$link),显示库中所有的表,已废弃!
可以使用mysql_query()发送SQL语句“show tables”来显示所有表。
改为:$table_list=mysql_query(“show tables”,$link)。
5、删除已经存在的库和表
删除库有两种方法:一是通过mysql_drop_db()函数,另一种是通过mysql_query()发送SQL语句:drop database database_name。
删除表只能通过mysql_query()发送SQL语句:drop table table_name。
?php
$sql="drop table test1"; //删除表的sql语句
mysql_query($sql,$link) //执行SQL语句
$sql="drop database data2"; //删除数据库的sql语句
mysql_query($sql,$link) //执行SQL语句
?>
对MySQL表进行操作
1、执行INSERT INTO语句插入记录
insert into table_name(field1,field2,…) values(values1,values2…)
?php
//以下SQL语句为插入记录操作
$sql="insert into test1(name, mail, phone, address) values('张三', 'zhangsan@homail.com', '1234567', '某省某市某区某街')";
mysql_query($sql); //执行SQL语句
$sql="select * from test1"; //先执行SQL语句显示所有记录
$result=mysql_query($sql,$link); //使用mysql_query()发送SQL请求
while($row=mysql_fetch_array($result)) //遍历SQL语句执行结果把值赋给数组
{
echo "";
echo "".$row[id].""; //显示ID
echo "".$row[name]." "; //显示姓名
echo "".$row[mail]." "; //显示邮箱
echo "".$row[phone]." "; //显示电话
echo "".$row[address]." "; //显示地址
echo "";
}
?>
array mysql_fetch_array (),返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE。
2、执行SELECT查询
浏览表中的所有记录:select * from tablename;
使用表单扩展添加记录:
前台:
script language="javascript">
function Juge(theForm)
{ if (theForm.name.value == "")
{ alert("请输入姓名!");
theForm.name.focus();
return (false);
}
form action="14-12.php" method="post" onsubmit="return Juge(this)">
tr>td>输入姓名:/td>td>input name="name" type="text">/td>/tr>
后台处理:14-12.php
?php
/*获取表单输入,并去掉HTML格式。表单采用post方式传递数据,用post来获取输入*/
$name=htmlspecialchars($_POST['name']); //获取姓名
$mail=htmlspecialchars($_POST['mail']); //获取邮箱
$phone=htmlspecialchars($_POST['phone']); //获取电话
$address=htmlspecialchars($_POST['address']); //获取地址
$myconn=mysql_connect("$db_host","$db_user","$db_pass"); //连接服务器
mysql_select_db("$db_name",$myconn); //选择操作库
$strSql="insert into $table_name(name, mail, phone, address) values ('$name', '$mail', '$phone', '$address')"; //对表进行插入操作
mysql_query($strSql,$myconn) or die("插入时出错".mysql_error());//发送SQL请求
?>
3、执行UPDATE语句更新记录
update table_name set field1=“value1”,field2=“value2” where where_definition
例:
?php
$sql="update test1 set name='王五', mail='wangwu@tom.com', phone='3456789', address='上海市高新开发区' where name=‘张三’"; //创建更新记录SQL语句
mysql_query($sql,$link); //发送SQL请求
?>
使用表单扩展更改记录功能:
在echo "".$row[address]." "; 后加一句:
echo "修改";
14-15.php
form action="14-16.php" method="post" onsubmit="return Juge(this)">
?php
mysql_select_db(data2,$link); //选择相应的数据库
$sql="select * from test1 where id=$_GET[id]"; //只显示请求ID号的内容
$result=mysql_query($sql);
$row=mysql_fetch_array($result); //把结果赋值给数组
?>
td>输入姓名:/td>
td>input name="name" type="text" value="">/td>
14-16.php
?php
$strSql="update $table_name set name='$name', mail='$mail', phone='$phone', address='$address' where id=$id"; //对表进行修改操作
mysql_query($strSql,$myconn) or die("插入时出错".mysql_error());//发送SQL请求
?>
4、执行DELETE语句删除记录
?php
delete from table_name where field1=“value1”
$sql="delete from test1 where id=1"; //创建更新记录SQL语句
mysql_query($sql,$link); //发送SQL请求
?>
5、执行ALTER TABLE语句改变表的结构
?php
alter table table_name add column field_name1 date, add column field_name2 time…;
$sql="alter table test1 add column mob_phone varchar(11),add column birthday varchar(8)";
mysql_query($sql); //执行添加字段的SQL语句
$sql="alter table test1 drop mail";
mysql_query($sql); //执行删除字段的SQL语句
mysql_list_fields(),返回指定表的所有字段。已过时,使用SQL语名:
$result=mysql_query("show columns from test1");
?>
对MySQL表的高级查询
1、使用WHERE子句:select * from test1 where ic”“not”等
使用LIKE模糊查询:select * from table_name where field_name like value
通配符“%”指代0个或多个、“_”指代任一个单个字符。
select * from table_name where address like “%北京%”,地址中包含北京的。
2、使用LIMIT子句对结果进行分页显示
select field_name from table_name limit 10,参数10为最大返回数目。
或 select field_name from table_name limit 2,3,第一个参数2指定要返回的第一行的偏移量,第二个指定返回行的最大数目。初始行的偏移量为0。
$sql="select * from test1 limit 3";
3、使用ORDER BY对查询结果进行排序
select field_name from table_name order by field_name desc
desc为降序,asc为升序,默认按照升序。
例:$sql="select * from test1 order by id desc";
多重排序:多次使用ORDER BY子句
select field_name from table_name order by field_name, order by field_name2
先对查询结果按field_name排序,如果多个记录的field_name字段相同,这时再按field_name2进行排序。
MySQL数据库实例:学生档案管理
15 用PHP实现人机交互
表单元素的组成:
1、TEXT(文本输入框)
2、PASSWORD(密码输入框)
基本同TEXT,输入以*号显示
3、BUTTON(普通按钮)
4、RADIO(单选按钮)
通常以一组出现,具有相同的NAME属性和不同的VALUE属性。checked为初始选中。
5、CHECKBOX(复选框)
6、SELECT(列表框)
1
2
3
SIZE为1时表现为下拉菜单,SIZE大于1时表现为列表框形式。
7、TEXTAREA(文本域)
输入内容
8、SUBMIT(提交按钮)
9、RESET(重置按钮)
10、HIDDEN(隐藏域)
在普通WEB页中插入表单
前台与后台的纽带:ACTION=URL
POST与GET的区别
GET方式提交的表单,数据被附加到URL上作为URL的一部分发送到服务器,POST方式则是将表单中的信息作为一个数据块发送到服务器。
处理表单提交的数据
如果register_globals = On,用户提交的变量可以当作全局变量直接使用,如$username, $password。但这样存在安全隐患。后来默认为Off。
引用方法:$_POST[USERNAME]、$_POST[password]
$_GET[USERNAME]、$_ GET[password]
在PHP的URL上加入参数:15-3.php?username=RBT&sex=男&age=22
用$_GET[username]、$_GET[sex]等处理。
pathinfo — 返回文件路径的信息
16 计数器程序
简单文本计数器:
?php
$c_file="counter.txt"; //文件名赋值给变量
if(!file_exists($c_file)) //如果文件不存在的操作
{
$myfile=fopen($c_file,"w"); //创建文件
fwrite($myfile,"0"); //置入“0”
fclose($myfile); //关闭文件
}
$t_num=file($c_file); //把文件内容读入变量
$t_num[0]++; //文件内容自增1
echo "欢迎!您是本站第".$t_num[0]."位访客!"; //显示文件内容
$myfile=fopen($c_file,"w"); //打开文件
fwrite($myfile,$t_num[0]); //写入新内容
fclose($myfile); //关闭文件
?>
图形化计数器
?php
$c_file="counter.txt"; //文件名赋值给变量
if(!file_exists($c_file)) //如果文件不存在的操作
{
$myfile=fopen($c_file,"w"); //创建文件
fwrite($myfile,"0"); //置入“0”
fclose($myfile); //关闭文件
}
$t_num=file($c_file); //把文件内容读入变量
$t_num[0]++; //原始数据自增1
$myfile=fopen($c_file,"w"); //写入方式打开文件
fwrite($myfile,$t_num[0]); //写入新数值
fclose($myfile); //关闭文件
echo "欢迎!您是本站第"; //显示内容头部
$myfile=fopen($c_file,"r"); //以只读方式打开文件
while(!feof($myfile)) //循环读出文件内容
{
$num=fgetc($myfile); //当前指针处字符赋值给变量
if($num!==FALSE) //如果数值存在执行操作
{
echo ".$num.".gif>"; //显示相应图片
}
}
fclose($myfile); //关闭文件
echo "位访客!"; //显示内容尾部
?>
string fgetc ( resource $handle ), 返回一个包含有一个字符的字符串,该字符从 handle 指向的文件中得到。碰到 EOF 则返回 FALSE。
文件指针必须有效,并且必须指向一个由 fopen() 或 fsockopen() 成功打开(但还没有被 fclose() 关闭)的文件。
警告:本函数可能返回布尔值 FALSE,但也可能返回一个与 FALSE 等值的非布尔值,例如 0 或者 ""。请参阅布尔类型章节以获取更多信息。应使用 === 运算符来测试本函数的返回值。
加入“防恶意刷新功能”
?php
$c_file="counter.txt"; //文件名赋值给变量
if(!file_exists($c_file)) //如果文件不存在的操作
{
$myfile=fopen($c_file,"w"); //创建文件
fwrite($myfile,"0"); //置入“0”
fclose($myfile); //关闭文件
}
$t_num=file($c_file); //把文件内容读入变量
if($_COOKIE["date"]!="date(Y年m月d日)") //判断COOKIE内容与当前日期是否一致
{
$t_num[0]++; //原始数据自增1
$myfile=fopen($c_file,"w"); //写入方式打开文件
fwrite($myfile,$t_num[0]); //写入新数值
fclose($myfile); //关闭文件
//重新将当前日期写入COOKIE并设定COOKIE的有效期为24小时
setcookie("date","date(Y年m月d日)",time()+60*60*24);
}
?>
多用户计数器
创建counter表
?php
$myconn=mysql_connect("localhost","root","rbt0328"); //连接到服务器
mysql_select_db(data2,$myconn); //连接到test库
$query="create table counter (id int(5) not null auto_increment primary key, username varchar(20) not null, count int(5) not null)"; //创建counter表语句
mysql_query($query); //执行语句
mysql_close($myconn); //关闭对数据库的连接
echo "你已经成功创建数据表"; //创建成功提示
?>
核心文件:
document.write("username"])
{
$username=$_GET["username"];
$myconn=mysql_connect("localhost","root","rbt0328"); //连接到服务器
mysql_select_db(data2,$myconn); //连接到test库
$sqlstr="select * from counter where username='$username'"; //查询用户名语句
$result=mysql_query($sqlstr) or die(mysql_error()); //执行查询语句
$num=mysql_num_rows($result); //查询结果保存到变量
if($num==0) //如果结果为0执行操作
{
$sqlstr="insert into counter (username) values ('$username')";//插入记录语句
mysql_query($sqlstr) or die(mysql_error()); //执行语句
}
$sqlstr="select count from counter where username='$username'";//重新查询
$result=mysql_query($sqlstr) or die(mysql_error()); //执行查询语句
$count=mysql_fetch_array($result); //结果保存到变量
$count[0]++; //自增1
echo $count[0]; //显示新结果
$sqlstr="update counter set count=count+1 where username='$username'";//更新数据
$result=mysql_query($sqlstr) or die(mysql_error()); //执行更新语句
mysql_close($myconn); //关闭数据库连接
}
else echo "用户名不能为空";
?>
位访问者");
运行时在WEB页插入脚本:
script language="javascript" src="http://127.0.0.1/16-5.php?username=rbt">
/script>
多用户,防刷新??
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94597/showart_1900873.html |
|