ccat 发表于 2006-10-17 14:10:43

如何读取mysql中某一字段的值?

在我的sp_user表中有一个class的字段,在username为2222的数据中,class值为2,我想让php知道这个值,怎么操作?

在phpmyadmin中这么查询可以看到那个小字段值,我不知道怎么能在php网页中读出来值。

SELECT class FROM sp_user WHERE username =2222

jiangtao9999 发表于 2006-10-17 21:19:19

闹了半天楼主还不会 php 处理 mysql 的返回值。 :mrgreen:

fetch 以后可以根据字段名来获取相应的值。
<?php
mysql_connect($host,$user,$password);
$result = mysql_db_query("database","select * from table");
while($row = mysql_fetch_array($result)) {
echo $row["user_id"];
echo $row["fullname"];
}
mysql_free_result($result);
?>
只要查询结果里含有你要的字段。就可以 $row["xxxxx"]方式来获取。(当然除了数组方式的传回,你还可以使用别的方式,但这不是这个问题的范围了。)

你的查询,fetch 后可以 $row["class"] 来获取。

ccat 发表于 2006-10-18 08:27:13

while($row = mysql_fetch_array($result)) {

}
这段干吗的?没看懂这段,不会我得在括号里把变量读出来吧

jiangtao9999 发表于 2006-10-18 18:52:41

$row = mysql_fetch_array($result)
把当前 $result 结果里指针所指的数据 fetch 为 array 给 $row。这样 $row 就以数组方式保存了结果里当前行的值。同时把指针向下移动一行。
这样用 while 就可以把所有返回行都进行一次查询。
最后一行完成后再 fetch 一次,就会返回 false ,while 跳出循环。
也就是说:SQL 查询完成,没有进行 fetch 的时候:

ID             class
1               aaa   (现在指针在这里)
2               bbb
fetch 一次后:

ID             class
1               aaa
2               bbb   (现在指针在这里)
同时 $row["ID"] = 1 ; $row["class"] = "aaa"
你再 fetch ,$row 就能获得第2行,同时指针移动到末尾(你可以认为是 EOF)。
再 fetch ,就会返回错误信息。

明白乎?

ccat 发表于 2006-10-19 16:46:28

花了2天时间,算是搞明白了。
我得把一个临时变量放到循环里才能得到我要的值

$result = mysql_db_query(mdb2,"SELECT * FROM sp_user WHERE username=$loginUsername");
while($row = mysql_fetch_array($result))
{

$bbb= $row["class"];
}
mysql_free_result($result);

jiangtao9999 发表于 2006-10-19 18:34:09

:roll:
如果你确定你的返回指只有一行,或者你只需要第一行,你完全可以不用 while 。
直接 $row = mysql_fetch_array($result)
后面就可以直接使用这个变量了。$resule 只是一个结果的指针,完全可以用一半的结果。

while 的作用是取出所有的结果并且进行处理,while 的 {} 里的代码就是对结果进行运算的代码。
这是因为 mysql 查询的结果一次只能 fetch 一行。如果你要多行,就需要多次进行 fetch。如果你需要同时处理很多行结果:

$i=1; // 我喜欢从1开始
while($row = mysql_fetch_array($result))
{
$bbb[$i]= $row["class"];
$i++;
}

这样 $bbb[] 这个数组就是所有返回的结果,$i 对应于第几个(行)。

你的代码完全可以不用 while 。
像你这种代码应该不使用 while 进行多次获取,用来防止数据末尾被人恶意添加一个同样的 username 。
仅仅获取第一行结果就行了。
还有一点,SQL 里 WHERE 的 " = " 似乎并不是完全等于,而是包含的意思?


不知道 php 支不支持这样使用: :twisted:

$result = mysql_db_query(mdb2,"SELECT * FROM sp_user WHERE username=$loginUsername");

$bbb =mysql_fetch_array($result)["class"];

mysql_free_result($result); //其实没有必要立即 free 掉,你后面的内存使用不大的话,php 代码运行结束会自动处理掉。

ccat 发表于 2006-10-19 21:46:35

原来如此,理解理解。
讲的透彻。
现在我还只用某一个数据,所以还用不到循环。
页: [1]
查看完整版本: 如何读取mysql中某一字段的值?