QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4586|回复: 6

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

[复制链接]
发表于 2006-10-17 14:10:43 | 显示全部楼层 |阅读模式
在我的sp_user表中有一个class的字段,在username为2222的数据中,class值为2,我想让php知道这个值,怎么操作?

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

SELECT class FROM sp_user WHERE username =2222
发表于 2006-10-17 21:19:19 | 显示全部楼层
闹了半天楼主还不会 php 处理 mysql 的返回值。

fetch 以后可以根据字段名来获取相应的值。
[code:1]<?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);
?>[/code:1]
只要查询结果里含有你要的字段。就可以 $row["xxxxx"]方式来获取。(当然除了数组方式的传回,你还可以使用别的方式,但这不是这个问题的范围了。)

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

使用道具 举报

 楼主| 发表于 2006-10-18 08:27:13 | 显示全部楼层
while($row = mysql_fetch_array($result)) {

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

使用道具 举报

发表于 2006-10-18 18:52:41 | 显示全部楼层
$row = mysql_fetch_array($result)
把当前 $result 结果里指针所指的数据 fetch 为 array 给 $row。这样 $row 就以数组方式保存了结果里当前行的值。同时把指针向下移动一行。
这样用 while 就可以把所有返回行都进行一次查询。
最后一行完成后再 fetch 一次,就会返回 false ,while 跳出循环。
也就是说:SQL 查询完成,没有进行 fetch 的时候:
[code:1]
ID             class
1               aaa     (现在指针在这里)
2               bbb[/code:1]
fetch 一次后:
[code:1]
ID             class
1               aaa
2               bbb     (现在指针在这里)[/code:1]
同时 $row["ID"] = 1 ; $row["class"] = "aaa"
你再 fetch ,$row 就能获得第2行,同时指针移动到末尾(你可以认为是 EOF)。
再 fetch ,就会返回错误信息。

明白乎?
回复

使用道具 举报

 楼主| 发表于 2006-10-19 16:46:28 | 显示全部楼层
花了2天时间,算是搞明白了。
我得把一个临时变量放到循环里才能得到我要的值
[code:1]
$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);[/code:1]
回复

使用道具 举报

发表于 2006-10-19 18:34:09 | 显示全部楼层

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

while 的作用是取出所有的结果并且进行处理,while 的 {} 里的代码就是对结果进行运算的代码。
这是因为 mysql 查询的结果一次只能 fetch 一行。如果你要多行,就需要多次进行 fetch。如果你需要同时处理很多行结果:
[code:1]
$i=1; // 我喜欢从1开始
while($row = mysql_fetch_array($result))
{
$bbb[$i]= $row["class"];
$i++;
}
[/code:1]
这样 $bbb[] 这个数组就是所有返回的结果,$i 对应于第几个(行)。

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


不知道 php 支不支持这样使用:
[code:1]
$result = mysql_db_query(mdb2,"SELECT * FROM sp_user WHERE username=$loginUsername");

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

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

使用道具 举报

 楼主| 发表于 2006-10-19 21:46:35 | 显示全部楼层
原来如此,理解理解。
讲的透彻。
现在我还只用某一个数据,所以还用不到循环。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-17 00:21 , Processed in 0.103475 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表