<?php
$q=$_GET["q"];$con = mysql_connect('localhost', 'peter', 'abc123');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$sql="SELECT * FROM person WHERE id = '".$q."'";
$result = mysql_query($sql); echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Job</th>
</tr>";while($row = mysql_fetch_array($result)) //这句是个什么意思哦??执行原理是什么??要求详细点;
{
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['Hometown'] . "</td>";
echo "<td>" . $row['Job'] . "</td>";
echo "</tr>";
}
echo "</table>";mysql_close($con);
?>数据库
id FirstName LastName Age Hometown Job
1 Peter Griffin 41 Quahog Brewery
2 Lois Griffin 40 Newport Piano Teacher
3 Joseph Swanson 39 Quahog Police Officer
4 Glenn Quagmire 41 Quahog Pilot
$q=$_GET["q"];$con = mysql_connect('localhost', 'peter', 'abc123');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$sql="SELECT * FROM person WHERE id = '".$q."'";
$result = mysql_query($sql); echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Job</th>
</tr>";while($row = mysql_fetch_array($result)) //这句是个什么意思哦??执行原理是什么??要求详细点;
{
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['Hometown'] . "</td>";
echo "<td>" . $row['Job'] . "</td>";
echo "</tr>";
}
echo "</table>";mysql_close($con);
?>数据库
id FirstName LastName Age Hometown Job
1 Peter Griffin 41 Quahog Brewery
2 Lois Griffin 40 Newport Piano Teacher
3 Joseph Swanson 39 Quahog Police Officer
4 Glenn Quagmire 41 Quahog Pilot
至于具体的网络连接怎么来实现, 需要看libmysql的源码..
大致的过程是:
php调用mysql_query实际调用libmysql的mysql_real_query发送查询语句给服务端, 产生一个struct MYSQL_RES(libmysql中定义).
php中调用mysql_fetch_array最终调用libmysql的mysql_fetch_row抓取服务端数据.
然后由PHP的mysql扩展将返回数据组织到结果数组中返回.//使用libmysql
#ifndef MYSQL_USE_MYSQLND
//抓取结果集
if ((mysql_row = mysql_fetch_row(mysql_result)) == NULL ||
(mysql_row_lengths = mysql_fetch_lengths(mysql_result)) == NULL) {
RETURN_FALSE;
}
//初始化结果数组
array_init(return_value); mysql_field_seek(mysql_result, 0);
for (mysql_field = mysql_fetch_field(mysql_result), i = 0;
mysql_field;
mysql_field = mysql_fetch_field(mysql_result), i++)
{
//这里处理将结果放入结果数组
}
//使用mysqlnd
#else
mysqlnd_fetch_into(mysql_result, ((result_type & MYSQL_NUM)? MYSQLND_FETCH_NUM:0) | ((result_type & MYSQL_ASSOC)? MYSQLND_FETCH_ASSOC:0), return_value, MYSQLND_MYSQL);
#endif
有不对的地方, 请各位大侠拍砖
mysql_fetch_array()就是用游标,每次读出一行数据并放在array里,那个$row就是一行记录,datatype是array,而array是一个hashmap,对应这一条记录。
然后while主体里面,是取出这条记录里对应filedname的具体值。
也就是这句$row = mysql_fetch_array($result)
$row是空的?然后后面的语句找不到内容返回空就成立?
1. 条件检测
2. 变量赋值.
上面有数据库的文件
这个你最好去把表达式和控制语句搞清楚..
简单说一下:
while的控制结构定义:
while( condition ) {
statements;
}
condition是一个表达式.
while要判断condition是真或假, 就要对这个表达式求值.
你的代码中, condition是$row=mysql_fetch_array($result)
那么, 程序就执行这一句进行求值.
$row=mysql_fetch_array($result)是一个赋值表达式
赋值表达式定义为:
左值 赋值操作赋 右值
左值是变量$row
赋值操作赋是=
右值是mysql_fetch_array($result), 右值的值就是mysql_fetch_array($result)的返回值.
因此, 在求condition的值时就将mysql_fetch_array($result)的返回值赋给了变量$row
而$row=mysql_fetch_array($result)整个这个表达式的值为赋值后左值的值, 即变量$row的新值.
while需要进行的是条件检测, 因此, 对$row进行隐式类型转换, 转换为bool型.好了, 现在条件检测和赋值目的都达到了..
我还是一头舞水)
$conn得到什么值然后开始和$row匹配,然后在什么情况下开始循环?循环终止的条件又是哪里决定的,由什么来决定的?
$conn初始值是不是空值? 还是应该把他当成循环体外的变量同等看待?$row['FirstName']里的作用是什么,是决定终止循环的条件之一吗?(能帮我写下程序运行后,各值的变化吗?也就是虚拟程序运行的全过程,先行谢过了,javascript和php里的while那里的说明都反复看了,感觉还是不能理解,因为那里定义的2个$i var i 都在循环外设定了初始值,而这里却没有)while
只要指定的条件成立,则循环执行代码块
此时的$row到底是个什么概念
$q=$_GET["q"];
#获取数据库连接, 赋值给变量$con
$con = mysql_connect('localhost', 'peter', 'abc123');
if (!$con){
die('Could not connect: ' . mysql_error());
}
#切换数据库连接的当前数据库.
mysql_select_db("my_db", $con);
$sql="SELECT * FROM person WHERE id = '".$q."'";
#发送一条$sql, 返回一个结果集对象, 赋值给$result
$result = mysql_query($sql, $con); //这里楼主代码少个$con
#循环从结果集中每次抓取一行记录, 每次循环将抓取到的结果赋值给$row, 并进行条件检测, 当结果集中没有记录时, mysql_fetch_array($result)返回FALSE
while($row = mysql_fetch_array($result)){
}
mysql_close($con);
?>这个问题就这样了, 如果你还不能理解, 就回去找一本程序设计相关的书, 好好从基础学起吧...
6天把xxxx学会只会害了你, 就像吃不熟的东西一样 算不得什么好事...