一般我们为了减少数据库链接,取数据是一次取出所有想要的数据然后做循环处理,而不是一个个循环取出
$servername = "localhost"$username = "root"
$password = "root"
$dbname = "aaaa"
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname)
// Check connection
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error)
}
$conn->query('set names utf8')
$sql = "SELECT name FROM xiao "//这里是查询xiao表的name列的所有数据
$result = $conn->query($sql)
if ($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()) {
//print_r($row)
echo "name: " . $row["name"]."<br>"//这里是循环打印
}
} else {
echo "没有查询到数据"
}
$conn->close()
结果已经有了,我就说下这句话的区别\x0d\x0a\x0d\x0amysql_select_db,字面上就能理解,选择数据库\x0d\x0a\x0d\x0a去PHP手册中可以发现该函数的返回值是bool,也就是布尔值\x0d\x0abool mysql_select_db ( string $database_name [, resource $ link_identifier ] )\x0d\x0a\x0d\x0a只是确定 *** 作是否成功\x0d\x0a\x0d\x0a$result = mysql_query($sql, $link)// 执行查询语句\x0d\x0a\x0d\x0a是执行查询语句,这时返回的是\x0d\x0aresource mysql_query ( string $query [, resource $link_identifier ] )\x0d\x0a\x0d\x0a资源符号,通过var_dump($result)可以看到该变量的类型,不是数组\x0d\x0a\x0d\x0a随后通过mysql_fetch_array($result)获取实际查询语句所能获取的数据\x0d\x0a每次 *** 作,返回一行数据\x0d\x0a该 *** 作会变相的移动该资源的指针,PHP的概念里面没有指针,但需要知道该函数可以多次执行\x0d\x0a概念和foreach一致\x0d\x0a\x0d\x0a所以通过\x0d\x0awhile ($bookInfo = mysql_fetch_array($result)){\x0d\x0a\x0d\x0a}\x0d\x0a可以获取所有的行数据\x0d\x0a如果没有数据会返回false,所以while会自动停止循环// 这是因为你从资源型结果集中获取数据时只获取了一次, 如果查询为多条数据应该迭代资源型结果集$r = mysql_query($sql) // 你的结果集
$result = []
while (true) {
$ary = mysql_fetch_assoc($r) // 取出第一条数据, 数据指针向后移动一位
if ($ary) {
$result[] = $ary // 存储到结果数组中
} else {
break // 如果取出的结果为false, 则代表数据获取完毕, 终止循环
}
}
echo '<pre>'
print_r($result) // 打印最终结果
echo '</pre>'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)