【问题标题】:How to put array into MySQL?如何将数组放入MySQL?
【发布时间】:2014-08-11 13:45:57
【问题描述】:

我有一个数组

variable $smt_database = 257, 259, 261

Array ( [0] => 257, 259, 261 ) 

我怎样才能像这样在数据库中插入这个变量 $smt_database :

$sql = "SELECT first_name FROM '.TABLE_PREFIX.'members 'WHERE member_id IN ($smt_database)";

当我回显 sql 时,它会显示如下数组:

SELECT first_name FROM '.TABLE_PREFIX.'members 'WHERE member_id IN (Array)

我怎样才能改变它可以像下面的sql:

SELECT first_name FROM '.TABLE_PREFIX.'members 'WHERE member_id IN (257, 259, 261)

我知道我们必须使用 implode 和 explode 但我不知道如何实现它们。

【问题讨论】:

  • $smt_database 变量从何而来?是用户提供的数据吗?
  • 它来自数据库.. 但我已经有了答案,谢谢。
  • 您在列中存储逗号分隔的数据?这是一个 SQL 反模式……除此之外,你可以使用 ${stm_database[0]}
  • 是的..呵呵..我不知道反模式..我看到下面的答案之一..不错的方法..我从来没有想过
  • 有关“乱穿马路”反模式的更多信息,另请参阅 this answer

标签: php mysql sql arrays


【解决方案1】:

简单使用implode

$in_text = implode(",", $smt_database);

// now use this variable in sql like

$sql = "SELECT first_name FROM '.TABLE_PREFIX.'members 'WHERE member_id IN ($in_text)";

如果数组中的值是数字,上述方法将起作用

所以如果数组中的值不是数字,你需要在你的值上加上单引号试试

更新 2:

$new_array = array();
foreach($your_array as $val)
{
    $new_array[] = "'".$val."'";
}

// now use implode

 $in_text = implode(",", $new_array);

  // now use this variable in sql 

【讨论】:

  • 内爆对Array ( [0] => 257, 259, 261 )没用它对Array ( [0] => 257,[1]=> 259,[2]=> 261 )有用
  • 谢谢 .. 我只是错过了 implode .. $mid1 = implode(',', preg_replace('/\s+/', '', $smt_database));
【解决方案2】:

imploadFIND_IN_SET 一起使用,因为IN 运算符不适用于字符串值。

$your_text = implode(",",$smt_database);

$sql = "SELECT first_name FROM '.TABLE_PREFIX.'members 'WHERE FIND_IN_SET(member_id,$your_text)";

【讨论】:

  • 兄弟,implode 中丢失
【解决方案3】:

使用这个:

$sql = "SELECT first_name FROM '.TABLE_PREFIX.'members 'WHERE member_id IN (".$smt_database[0].")";

假设你有数组 $smt_database = Array ( [0] => 257, 259, 261 )

【讨论】:

  • 嗨,解决我的问题的好方法..感谢知识分享..从来没有想过像这样解决这类问题的方法..
猜你喜欢
  • 1970-01-01
  • 2015-08-21
  • 1970-01-01
  • 2019-04-08
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多