PHP与MySQL代码无法显示数据,请求错误排查
排查PHP+MySQL代码无法显示数据的问题
兄弟,你的代码里有几个关键错误,导致数据根本查不出来,我给你一步步拆解:
1. 最致命的逻辑错误:把结果集资源直接当字段值用
你第一个查询执行后,$ddaa拿到的是MySQL结果集资源,不是你想要的ref字段的具体值!你直接把这个资源变量塞到第二个查询的WHERE条件里,数据库完全不知道你要查什么,自然返回空结果。
正确的做法是先从第一个结果集里取出ref的值:
// 执行第一个查询 $ref_query = mysql_query("SELECT ref FROM users WHERE id='$uid'"); // 先检查查询是否成功(非常重要,能帮你快速定位错误) if (!$ref_query) { die('第一个查询出错: ' . mysql_error()); } // 从结果集里取出ref字段的值 $ref_row = mysql_fetch_array($ref_query); $ref_value = $ref_row['ref'];
2. 第二个查询的变量用错了
拿到$ref_value之后,第二个查询要使用这个真实的字段值,而不是之前的结果集资源:
// 执行第二个查询,用拿到的ref_value作为条件 $mallu_query = mysql_query("SELECT mallu FROM users WHERE id='$ref_value'"); // 同样检查查询是否成功 if (!$mallu_query) { die('第二个查询出错: ' . mysql_error()); } // 取出结果 $result = mysql_fetch_array($mallu_query); // 还要判断是否真的取到了数据 if ($result) { echo $result['mallu']; } else { echo '没有找到对应的mallu数据'; }
3. 其他潜在坑点
$uid变量未定义:你的代码里直接用了$uid,但没看到你给这个变量赋值的代码,如果$uid是空或者根本没定义,第一个查询就会查不到任何数据。- 废弃的
mysql_*函数:mysql_*系列函数在PHP 5.5之后就被官方废弃了,PHP 7更是直接移除了这个扩展,建议换成mysqli_*或者PDO,安全性和稳定性都更高。 - SQL注入风险:直接把变量拼到SQL语句里,存在严重的SQL注入漏洞,不管用哪种数据库扩展,都要使用预处理语句来避免这个问题。
内容的提问来源于stack exchange,提问作者Syed Mohammad Ibrahim Khalil
相关产品推荐
相关产品推荐

