$playerhp = mysql_query("SELECT hp FROM member WHERE user = '".$_SESSION['username']."'");
echo "hp:".$playerhp;
这可能是这个董事会有史以来最愚蠢的问题,但我现在试了好几个小时,却找不到解决办法......
我想要做的是将变量$ playerhp定义为我的数据库中的数字,以便我以后可以使用它但是在康复状态下我什么都没回来(eco只是为了测试$ playerhp目前正在筹备的所有指南现在都会继续使用$ row和构建一个数组,但是当我得到一个数字时,我需要一个数组呢?
PS: 当我添加mysql_fetch_assoc或mysql_fetch_array时,我收到错误消息:mysql_fetch_array()期望参数1是资源,布尔值在 所以在那之前我的错误肯定是在某个地方......
答案 0 :(得分:0)
您忘记了获取结果行。 mysql_query
函数返回结果资源,而不是行值。
您可以使用mysql_fetch_assoc
,mysql_fetch_array
或mysql_result
功能。
$row = mysql_fetch_assoc($playerhp);
echo $row['hp'];`
答案 1 :(得分:0)
如果您只是请求一个变量,那么您可以使用mysql_result
用法:
$playerhp = mysql_result(mysql_query("SELECT hp FROM member WHERE user = '".$_SESSION['username']."' limit 1"), 0);
这应该将hp存储在$playerhp
变量中。
答案 2 :(得分:0)
mysql_query()函数将在成功时返回resource。因此,在获取资源之后,您需要在该资源变量上使用php mysql_fetch_assoc(),mysql_fetch_array()等来获取行数据。之后,您可以将它们用作常规变量。
所以这里:
$row = mysql_query("SELECT hp FROM member WHERE user = '".$_SESSION['username']."'");
$playerhp = mysql_fetch_assoc( $row["hp"] );
但是为了开发新的php应用程序,请不要使用mysql扩展,因为从PHP 5.5.0开始不推荐使用此扩展,并且将来会删除它。相反,应该使用MySQLi或PDO_MySQL扩展。
了解有关mysqli here
的更多信息详细了解PDO here
与mysql扩展相比,mysqli和pdo将提供更多安全性。在mysql查询中使用过滤数据时,尝试使用过滤数据以防止sql注入。