我正在尝试用php做留言簿,但我遇到了一些 mysql_fetch_array 功能的问题。我不明白为什么。我试着通过推杆进行调试 死(“错误”.mysql_error())但没有打印出来。我保证所有变量都已正确初始化。 这是我的代码:
<?php
$nbmessagesPP = 10;
mysql_connect(HOST, USER,PASSWORD) or die( "Unable to connect to database");
mysql_select_db(DBNAME) or die ("Unable to select database!");
.......
if(isset($_GET['page'])){
$page = $_GET['page'];
} else {
$page = 1;
}
$first_msg = ($page - 1) * $nb_of_Page;
$query = 'Select * from livredor ORDER BY id DESC LIMIT '.$first_msg.', '.$nbmessagesPP;
$rep = mysql_query($query) or exit("Error in query".mysql_error());
$v = true;
while($v){
$v = ($data = mysql_fetch_array($rep) or die ("Error fetching the data : ".mysql_error()));
echo "<p>id -> ".$data['id']."</p>";
echo "<p>pseudo ->".$data['pseudo']."</p>";
echo "<p>messages ->".$data['message']."</p>";
echo "<hr/>";
}
mysql_close();
?>
有人可以帮助我;)
答案 0 :(得分:3)
您的代码未正确处理错误或最后一行。如果$v
为false,它仍会继续打印一些数据。最好改写为:
while (($data = mysql_fetch_array($rep))) {
echo
...
}
在继续进行打印之前,这会强制对抓取进行评估。
答案 1 :(得分:0)
问题是您正在尝试访问不存在的结果元素。 mysql_fetch_array
返回带有整数索引的常规数组。你想要的是mysql_fetch_assoc
,它返回一个关联数组。
编辑:您还遇到了Chris所描述的问题,而没有正确处理最后一行。
答案 2 :(得分:0)
通常,如果您收到错误消息“提供的参数不是有效的MySQL结果资源”,则表示您的MySQL查询失败,因此无法返回有效的结果资源。
在通过$query
发送之前尝试回显mysql_query()
,然后尝试将echo'd查询放入phpMyAdmin,看看它是否返回任何结果。
答案 3 :(得分:0)
好的,我发现了问题。 问题是在另一个页面我有一个mysql_connection,在那个页面我正在创建一个新的。 我只是捕获mysql_connect函数的返回值,然后在最后用mysql_close函数关闭它。像这样:
<?php
$link = mysql_connect(HOST, USER,PASSWORD) or die( "Unable to connect to database");
mysql_select_db(DBNAME) or die ("Unable to select database!");
.....
while($data = mysql_fetch_array($rep)) {//i do something here}
mysql_close($link);
?>
感谢您的回答:)