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

使用IN查询匹配$following中username列时返回空,求解决方法

解决IN语句查询无结果的问题

先帮你排查下用数组变量配合IN语句时最容易踩的几个坑,大概率是格式处理出了问题:

  • 变量格式没转对:如果你的$following是数组(比如$following = ['John', 'Sarah'];),直接把它塞进IN语句里,生成的SQL会变成IN(Array),这肯定查不到数据。你得把数组转成带单引号的字符串列表,用implode()就能搞定:

    $followingStr = implode("','", $following);
    $query = "SELECT content FROM your_table WHERE username IN ('$followingStr')";
    

    这样生成的SQL就是SELECT content FROM your_table WHERE username IN ('John','Sarah'),就能匹配到对应的行,拿到spoke、walked这些内容了。

  • 记得规避SQL注入风险:上面的写法能解决问题,但有注入隐患,更安全的做法是用预处理语句,比如PDO的实现方式:

    $placeholders = implode(',', array_fill(0, count($following), '?'));
    $stmt = $pdo->prepare("SELECT content FROM your_table WHERE username IN ($placeholders)");
    $stmt->execute($following);
    $targetContent = $stmt->fetchAll(PDO::FETCH_COLUMN);
    

    这种方式既安全又能保证查询的准确性。

  • 检查大小写匹配:还要确认数据库里的username值和$following里的大小写完全一致,比如数据库里存的是john,但变量里是John,默认SQL排序规则是区分大小写的,这时候可以用LOWER(username) IN (LOWER('John'), LOWER('Sarah'))来做不区分大小写的匹配。

你可以先按第一种方法测试,要是还没结果,就排查下大小写问题或者换用预处理语句,应该就能拿到你想要的内容了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:06:01