【问题标题】:array of comma separated string IN in clause mysql子句mysql中逗号分隔的字符串IN数组
【发布时间】:2015-03-02 19:30:27
【问题描述】:

我有一个这样的数组:

 $myarray=  'zzz,aaa,bbb'  ; 

并希望在 mysql IN 子句中使用它:

 "...  WHERE ids IN ($myarray) "   // didnt work 
 "...  WHERE ids IN ('$myarray') " // didnt work

我得到的错误是该数组zzz 中的第一个值表示 zzz 不是列名。所以我知道我必须用引号将值分开:

 $myarray=  ' "zzz","aaa","bbb" '  ;

但我不知道这样做。任何帮助将不胜感激。

【问题讨论】:

  • 因为它真的不是一个数组,它是一个字符串。您需要使用适当的引号和逗号implode
  • 最终结果应该是这样的:WHERE ids IN ('zzz','aaa','bbb')
  • @JayBlanchard 你的意思是我在 implode(", ", $myarray); ` ?
  • 这里有很多很好的答案@ScooterDaraf - 一个衬里特别优雅。我的示例逐行显示了正在发生的事情。
  • 附带说明,如果您的变量 $myarray 不是数组,您可能不应该调用它。起个好名字,更容易维护代码。

标签: php mysql arrays mysqli


【解决方案1】:
$myarray = 'zzz,aaa,bbb';
$myarray = implode("','",explode(',',$myarray));
$query   = "..... WHERE ids IN ('$myarray')";

【讨论】:

  • 我不知道为什么 id 不适用于 2 个字符串或更多,它只适用于单个字符串。
【解决方案2】:

你需要explode()你的字符串然后implode()它 -

$myarray = 'zzz,aaa,bbb'; 
$realArray = explode(',', $myarray);
$stringForIn = "'" . implode("','", $realArray) . "'";
echo "WHERE ids IN ($stringForIn)";

【讨论】:

  • 我不知道为什么 id 不适用于 2 个字符串或更多,它只适用于单个字符串
  • 如果不了解您的数据库的更多信息,就很难知道它为什么不工作。你能用整个查询和你的表格布局@ScooterDaraf 更新你的原始帖子吗?
  • 你能回显完整的查询@ScooterDaraf 吗?到目前为止,我没有看到任何问题。
  • 如果您需要我们进一步了解@ScooterDaraf,请告诉我们。确保使用适当的代码更新您的帖子,以便我们了解发生了什么。
【解决方案3】:

试试看:

$myarray=  'zzz,aaa,bbb'  ; 
echo implode '"' . ('","', explode(',', $myarray)) . '"';

【讨论】:

    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 2012-05-15
    • 2011-05-13
    • 2020-07-27
    • 2011-06-11
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多