5月3 数据访问

数据访问

方式1:以过时不推荐使用

造一个连接(即建立通道)
$db =mysql_connect("localhost","root","1234");
//$db =mysql_connect("服务器名称","用户名","密码");

选择要操作哪一个数据库
mysql_select_db("mydb",$db);//数据库名称,通过哪个通道连接
//mysql_select_db("数据库名称",连接通道);

写SQL语句
$sql = "select * from info";

执行SQL语句,返回结果集
$result =mysql_query($sql);

从结果中取数据
$row =mysql_fetch_row($result);
$row1 =mysql_fetch_row($result);//执行第几次就是第几条
var_dump($row);
var_dump($row1);

while($row = mysql_fetch_row($result))
{
var_dump($row); //输出全部结果
}


方式2:面向对象的方式,非常重要的必须掌握

造一个连接对象
$db = new MySQLi("localhost","root","","mydb");
$db = new MySQLi("服务器名称","用户名","密码","要操作的数据库");

判断连接是否出错
1)if(mysqli_connect_error())
{
echo "连接失败";
exit();//退出程序
}
2)!mysqli_connect_error() or die("连接失败");
//mysqli_connect_error()检查错误,!表示逻辑非

写SQL语句
$sql = "select *from Info";

执行SQL语句 查询语句如果执行成功返回结果集对象,如果执行失败返回false
$result = $db->query($sql);

从结果集中读取数据
if($result)
{
var_dump($result->fetch_row());//返回一行数据的数组(索引数组),每次执行返回一条

while($row=$result->fetch_row())//返回所有的数组
{
var_dump($row);
}

var_dump($result->fetch_assoc());//返回关联数组,返回一行数组

var_dump($result->fetch_all());//返回二维数组,返回所有数据

var_dump($result->fetch_object());//返回一行数据,对象
}

例题:

以下拉菜单的形式输出Nation表的民族
<?php

//造一个连接对象
$db =new MySQLi("localhost","root","","mydb");

//判断连接是否有错
!mysqli_connect_error() or die("连接失败");

//写SQL语句
$sql = "select * from Nation";

//执行SQL语句
$result =$db->query($sql);

//从结果集中读取数据
if($result)
{
$attr = $result->fetch_all();
echo "<select>";

foreach($attr as $value)
{
echo "<option value='{$value[0]}'>{$value[1]}</option>";
}

echo "</select>";

}
?>


作业:把INFO表查出来用表格显示

<?php


//造一个连接对象
$db = new MySQLi("localhost","root","","mydb");
//判断连接是否有错
!mysqli_connect_error() or die("连接失败");
//写SQL语句
$sql ="select * from Info";
//执行SQL语句
$result =$db->query($sql);
//从结果集中读取数据
if($result)
{
$attr = $result->fetch_all();
echo "<table width='100%' cellpadding='0' cellspacing='0' border='1'>";
echo "<tr><td>Code</td><td>Name</td><td>Sex</td><td>Nation</td><td>Birthday</td></tr>";
foreach($attr as $value)
{
echo "<tr><td>{$value[0]}</td><td>{$value[1]}</td><td>{$value[2]}</td><td>{$value[3]}</td><td>{$value[4]}</td></tr>";
}

//或是用for的遍历

for($i=0;$i<count($attr);$i++)
{
echo "<tr><td>{$attr[$i][0]}</td><td>{$attr[$i][1]}</td><td>{$attr[$i][2]}</td><td>{$attr[$i][3]}</td><td>{$attr[$i][4]}</td></tr>";
}

echo "</table>";
}

?>

Info表以表格的形式输出,在原有的基础上又进行了完善,主要是针对于性别和民族
<table width="100%" cellpadding="0" cellspacing="0" border="1">
<tr>
<td>代号</td>
<td>姓名</td>
<td>性别</td>
<td>民族</td>
<td>生日</td>
</tr>

<?php
$db = new MySQLi("localhost","root","","mydb");
!mysqli_connect_error() or die("连接失败");
$sql = "select * from Info";
$result = $db->query($sql);
$attr = $result->fetch_all();
if($result)
{
foreach($attr as $v)
{
//处理性别
$sex = $v[2]?'男':'女';

//处理民族
$sql1 = "select name from Nation where Code ='{$v[3]}'";
$rnation = $db->query($sql1);
$attr1 = $rnation->fetch_assoc();

echo "<tr>
<td>{$v[0]}</td>
<td>{$v[1]}</td>
<td>{$sex}</td>
<td>{$attr1['name']}</td>
<td>{$v[4]}</td>
</tr>";
}
}
?>
</table>

原文地址:https://www.cnblogs.com/Duriyya/p/5458740.html