读取数据库里字段值有时错误有时正确。。

mengqianye 2008-04-14 01:52:46
chat.html

在这个页面里会有一个button,点击后,会往数据库里表userInfo添加一条记录,字段有id,support,status等。support默认为0,status默认为"wait";

assignSupport.html //一直运行着

这个页面里用setInterval(),每隔一段时间查询userInfo里,用一定的法则,将status为 "wait"的条目的support修改为一些特定的值,并将status改为"assigned";

执行的时候,目的是要在chat.html这个页面里得到id,以及修改后的support的对应值。

打开chat.html,点击button,往userInfo表里添加一条记录,id为自动分配的,support为0,status为"wait"。插入记录的时候,用的是xmlHttpRequest,回调函数里返回的是这条记录的id。到这里都没有问题。
因为assignSupport.html是一直在运行的,所以不知道在什么时候它就会给support字段赋值,因此在上面的回调函数里:

function returnUserId()
{
//那些if等省略..xmlDoc为responseText
userId = parseInt(xmlDoc);//得到id
//alert(userId);
getS = setInterval(getSupport,300); //每隔一段时间执行函数getSupport.
}

function getSupport()
{
var url = "getSupportId.php?"+"&userId="+userId;
connection(url,returnSupportId,"Text"); //这个函数用来创建xmlhttp,并设定返回的时候responseText,回调函数为returnSupportId
}

function returnSupportId(xmlDoc)
{
alert(xmlDoc);
//if(xmlDoc == "error") return;
if(parseInt(xmlDoc) != 0)
{

supportId = parseInt(xmlDoc);
alert(supportId);

clearInterval(getS);
}
}


getSupportId.php


<?php
$userId = $_GET['userId'];
$conn = mysql_connect("localhost","root","");
$db=mysql_select_db("online",$conn);
$mysql_select = "select support,status from userinfo where id='$userId'"; //按理说没有必要select status
//$mysql_select = "select support from userinfo where id='$userId'";
$result=mysql_query($mysql_select)
or die("Query failed: " . mysql_error());;
$num = mysql_num_rows($result);
if($num == 1)
{
if(mysql_data_seek($result,0))
{
$row = mysql_fetch_row($result);
echo $row[0];
echo $row[1]; //按理说是没有必要输出这个的。

}
else echo "error";
}
else
{
echo $num;
echo "error";
}
?>


这样子,返回回来的结果是正确的,但是如果把select里没有status,或者没有echo $row[1],即status,得到的supportId就是错误的,总是0,而我在mysql-front里看到的support字段明明已经修改过来了,返回的却是错的,这个怎么回事呢?


...全文
78 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
mengqianye 2008-04-14
是这个原因。。谢啦~~~~~
回复
剑心永远OK 2008-04-14
or die("Query failed: " . mysql_error());;

两个结束符?笔误?
回复
junp2007 2008-04-14
url 后加个随机参数试下,看是不是浏览器缓存造成
回复
mengqianye 2008-04-14
[Quote=引用 5 楼 junp2007 的回复:]
确定getSupportId.php执行没错,那就是JS问题了
[/Quote]

但是js只是alert了一下,好像也不会有什么问题。。而且返回的结果是有时对有时错。。很诡异。。。
回复
junp2007 2008-04-14
确定getSupportId.php执行没错,那就是JS问题了
回复
mengqianye 2008-04-14
[Quote=引用 2 楼 junp2007 的回复:]
echo 一下 $mysql_select,到mysql-front里执行看能不能返回想要的结果
[/Quote]

$mysql_select没有问题,mysql-front里看到的执行结果也没有问题。。就是把这个结果读取出来的时候就是错的。。。
回复
mengqianye 2008-04-14
把if(mysql_data_seek($result,0)) 撤掉也没有用。。

刚才发现,就算select 里有status,echo $row[1]了,有时候还会有问题,数据库里support已经修改了,status也改为"assigned"了,可是查询后返回的还是support还是0,status还是"wait",因为不知道到底是什么时候修改support和status字段的值的,所以我用了setInterval,一直都在查询,知道得到正确值为止,可是得到的值就一直是错的,就算数据库里的值已经改过来了。。数据库里support是int型的。。
回复
junp2007 2008-04-14
echo 一下 $mysql_select,到mysql-front里执行看能不能返回想要的结果
回复
总哈哈 2008-04-14
楼主把if(mysql_data_seek($result,0))
撤掉看看!
回复
相关推荐
发帖
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
帖子事件
创建了帖子
2008-04-14 01:52
社区公告
暂无公告