我已编写此代码以获取表中的所有记录;但由于某种原因,它不起作用:
function GetAllData(){
$result = mysql_query("SELECT * FROM a2h_member_type");
while($row = mysql_fetch_array($result))
{
echo $row['member_type_id'] . " " . $row['member_type_name'] . " " . $row['description'];
}
}
它没有进入while循环,但表中有2条记录。有什么想法吗?
答案 0 :(得分:4)
while循环不会运行有两个原因:
你能检查这三件事吗?您可以通过打印mysql_error()
来检查是否有错误,并且可以使用mysql_get_num_rows($result)
检查返回的行数
答案 1 :(得分:3)
检查mysql_errno()
和mysql_error()
返回的内容。
从MySQL数据库后端返回的错误不再发出警告。
这意味着您必须手动检查错误(无论如何这都是好的做法)。
答案 2 :(得分:0)
我唯一的建议就是将表名用单引号括起来(我确定这个字符有一个更正式的名字!):
$result = mysql_query("SELECT * FROM `a2h_member_type`");
- 但由于你的表名中没有任何奇怪的字符,我认为这不会产生太大的影响。可能值得一试。
答案 3 :(得分:0)
你把它封装在一个函数中。根据脚本中调用函数的时间和位置,您可能尚未打开数据库连接或已选择数据库。在调用此函数之前,您需要同时执行这两项操作。去查找代码中调用函数的位置,并确保在调用之前调用这两个函数:
$con = mysql_connect([the databases URL], [your database username], [your database password]);
if(!$con) {
die("Could not connect: " .mysql_error());
}
mysql_select_db([the name of your database], $con);
可能最好的办法是以某种方式保存你的连接变量(在这个例子中为$ con),并使用if(!$ con)代码在函数的开头检查它。
答案 4 :(得分:0)
我没有看到mysql_connect()或mysql_select_db()命令,因此我假设您在调用此方法之前已连接。我还假设你已经使用了字段名称的确切拼写,因为它们区分大小写!因此,逻辑将指示mysql_fetch_array($ result)不返回任何行。
由于该方法未显式打开数据库且mysql_query()未指定特定的数据库资源,因此查询将查看您使用mysql_connect()打开的最后一个数据库。如果您从未连接或切换到其他数据库,则无法找到该数据库。 mysql_query()可能返回FALSE,因此mysql_fetch_array()也返回FALSE。
答案 5 :(得分:0)
首先尝试添加一些调试信息:
error_reporting(E_ALL);
ini_set("display_errors", true);
..........
function GetAllData(){
$result = mysql_query("SELECT * FROM a2h_member_type") or die(mysql_error());
while($row = mysql_fetch_array($result))
{
echo $row['member_type_id'] . " " . $row['member_type_name'] . " " . $row['description'];
}
}
请执行此操作并告诉我们您的所见。