Php 我的select查询有什么问题?
我编写这段代码是为了获取表中的所有记录;但是由于某些原因,它不起作用:Php 我的select查询有什么问题?,php,sql,mysql,Php,Sql,Mysql,我编写这段代码是为了获取表中的所有记录;但是由于某些原因,它不起作用: 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'] . " " . $r
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条记录。有什么想法吗?while循环无法运行有两个原因: 查询失败。鉴于查询的简单性,只有在以下情况下才会发生这种情况: 这个表不存在 与数据库没有连接 表中没有行。 你能检查一下这三件东西吗?您可以通过打印mysql\u error检查是否有错误,也可以使用mysql\u get\u num\u rows$result检查返回的行数检查mysql\u errno和mysql\u error返回的内容 根据: 从MySQL数据库后端返回的错误不再发出警告
这意味着您必须手动检查错误,这是一种很好的做法。我唯一的建议是将表名用单引号括起来。我确信该字符有一个更正式的名称!:
$result = mysql_query("SELECT * FROM `a2h_member_type`");
-但是,由于您的表名中没有任何奇怪的字符,我认为这不会有太大的区别。不过可能值得一试。您已将其封装在函数中。根据脚本中调用函数的时间和位置,您可能尚未打开数据库连接或选择数据库。在调用此函数之前,需要同时执行这两项操作。在代码中查找函数的调用位置,并确保在调用函数之前先调用以下两项:
$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 code.我没有看到mysql\u connect或mysql\u select\u db命令,因此我假设您在调用此方法之前已连接。我还假设您使用了字段名的精确拼写,因为它们区分大小写!所以,逻辑要求mysql_fetch_array$result不返回任何行
由于该方法没有显式打开数据库,并且mysql\u查询没有指定特定的数据库资源,因此查询将查看您使用mysql\u connect打开的最后一个数据库。如果您从未连接或切换到其他数据库,则它无法找到该数据库。mysql\u query可能返回FALSE,因此mysql\u fetch\u数组也返回FALSE。首先尝试添加一些调试信息:
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'];
}
}
请执行此操作并告诉我们您看到了什么。您确定已打开与数据库的连接,并键入了正确的数据库和表名等吗?听起来不是居高临下,这正是我99%的问题来自于愚蠢的语法错误。mysql_num_rows$result的结果是什么?我认为这个角色的官方名称是backtick:-什么不起作用?检查不起作用?这些函数的输出是什么?