You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从MySQL查询结果中提取值——Xamarin.Forms社交应用开发问题

解决Xamarin.Forms社交应用中提取关联用户信息的问题

看起来你遇到的麻烦是因为用了SELECT *查询,导致posts和users表的同名列(比如id)在结果数组里出现了重复的键(既有关联键又有数字索引),这让你没法顺畅提取用户名这类需要的字段。我给你两个解决方案,优先推荐第一个更稳妥的方式:

方案1:优化SQL查询(推荐)

别再用SELECT *了,明确指定你需要的列,给同名列起别名,这样结果数组的键会清晰唯一,完全不用纠结索引的问题。比如你需要帖子内容、发布时间,以及用户的用户名,SQL可以这么写:

SELECT 
    P.id AS post_id, 
    P.body, 
    P.timestamp, 
    U.id AS user_id, 
    U.username  -- 这里替换成你users表中实际的用户名列名,比如name/account_name
FROM posts AS P 
INNER JOIN users AS U ON U.id = P.user_id 
WHERE P.user_id=:userid

执行这个查询后,你就能直接通过关联键轻松取值了:

$postData = $results[0];
$username = $postData['username']; // 直接拿到用户名
$postContent = $postData['body'];
$postTime = $postData['timestamp'];

方案2:从现有查询结果临时取值(不推荐)

如果暂时不想修改SQL,你可以先确认结果数组里的键对应关系——比如先打印所有键:

print_r(array_keys($results[0]));

假设users表的用户名对应的关联键是username(这个列名在两个表中不重复),那你可以直接这么取:

$username = $results[0]['username'];

但这种方式很脆弱,一旦表结构(列名、顺序)变化,代码就会出错,所以还是优先用方案1。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:25:26