(1)通过php操作数据库分为4步:
——连接数据库服务器,如mysql。
——选择一个数据库。
——设置显示的字符集,防止中文显示错误。
——执行sql语句。
<?php
//利用php连接数据库,需要注意的是有时候尽管连接上数据库,但是部分操作还是需要权限的,并非可以执行所有操作
$db_host="localhost";
$db_user="root";
$db_pwd="root";
$db_name="newone";
//这里的@是屏蔽mysql_connect语句返回的系统自动生成的错误信息,保证安全以及用户友好。
$link=@mysql_connect($db_host,$db_user,$db_pwd);
if ($link) {
echo "MySql服务器连接成功!<br />";
//mysql_select_db()第二个参数是连接符,如果省略则默认是上一个成功的连接符,就是$link,以下很多函数都省略了此参数
if (mysql_select_db($db_name)) {
echo "成功进入数据库".$db_name."<br />";
//设置字符集,否则中文无法显示,以下用charset和names均可
//mysql_query("set charset utf8;");
mysql_query("set names utf8;");
//引号中,执行语句的最后可以加分号,也可以省略分号
$result=mysql_query("select * from newtable;");
//直接执行下面语句,输出的是资源结果Resource id #4,我们需要从中取出数据
print_r($result);
//mysql_fetch_assoc()和用mysql_fetch_array()加上第二个可选参数MYSQL_ASSOC完全相同,返回关联数组。
//也可以用mysql_fetch_row(),返回枚举数组。
//用while($row=mysql_fetch_row($result)){$rows[]=$row;}实现取出所有值
$rows=mysql_fetch_assoc($result);
dump($rows);
}else {
echo "没找到数据库";
}
}else{
//mysql_error()是显示最近一次的错误信息,只显示错误文本信息,而不会把文件等等信息显示出来
echo "WARNING:MySql服务器连接失败!".mysql_error();
}
function dump($arr){
echo "<pre>";
print_r($arr);
echo "</pre>";
}
?>
(2)当然,上述部分代码书写习惯,也可以变成如下。比如定义常量的时候,用define代替。
define("db_host", "localhost");
还有,不实用if嵌套,而是单独写,如果遇到错误信息,只要终止程序继续执行即可,用exit("连接数据库服务器错误");
(3)一般,连接数据库的php代码写在整个html文档的最前面。
然后在<body></body>中需要使用到数据中的数据时,用mysql_fetch_row等获取数据,并且利用<? echo $row[0] ?>等把数据库中的内容动态地显示在网页中。
(4)mysql_fetch_row()和mysql_fetch_array()和mysql_fetch_assoc()都是从结果集中取出一行数据,然后指向下一行。区别在于:
——mysql_fetch_row()最终结果是枚举数组,即下标是枚举数字,即输出值的时候用$row[0],$row[1]之类的。
——mysql_fetch_assoc()取出的结果是关联数组,就是原有的字符下标,即$row["id"],$row["title"]即可输出值。
——mysql_fetch_array()取出的默认是混合的。但也可以指定第二个参数,可以是枚举下标也可以选择字符下标。默认混合的话,输出两种,一种是枚举下标一种是字符下标,如下,所以取值的话随便写哪一种都可以取值:
Array
(
[0] => 3
[id] => 3
[1] => 反腐力度加大
[title] => 反腐力度加大
)
(5)输出结果集中所有行,就是用while循环。
while ($rows=mysql_fetch_array($result)) {
dump($rows);
}
(6)结果集中记录的数量是mysql_num_rows();
echo mysql_num_rows($result);