【问题标题】:Can I put an array inside a Mysql query?我可以在 Mysql 查询中放置一个数组吗?
【发布时间】:2012-01-03 23:55:39
【问题描述】:

我有一个数组:

$arrayA = array(1, 2, 3, 4, 5);

我可以像在查询中放置一个常数一样放置一个数组吗?像这样:

SELECT id as 'ID',
       name as 'NAME',
       '1234' as 'Number'
FROM student 

上面的查询会生成这个:

ID    NAME    Number
1     Lily    1234
2     Sherry  1234
3     Bob     1234
4     Tom     1234
5     Lucy    1234

我想做这样的事情:

SELECT id as 'ID',
       name as 'NAME',
       $arrayA as 'Number'
FROM student 

所以如果我有 5 个学生,当我执行 mysql_fetch_array 时,它会在 Number 列下自动生成 1,2,3,4,5。

ID    NAME    Number
1     Lily    1
2     Sherry  2
3     Bob     3
4     Tom     4
5     Lucy    5

【问题讨论】:

    标签: php mysql arrays fetch


    【解决方案1】:

    可以使用php来实现,比如

    $students = array();
    $arr = range(1,5);
    $idx = 0;
    while ( $row = $mysql_result->fetch_assoc())
    {
      // return array(1,2,3,4,5)
      // $row['Number'] = $arr;
    
      // return matched
      // $row['Number'] = $arr[$idx];
    
      // this is what you can try
      $row['Number'] = ++$idx;
      $students[] = $row; 
    }
    

    注意:如果您打算使用oi 和li 标签进行显示,
    你可以选择退出

    【讨论】:

    • 如果我理解 peipei 正确,那应该是 $row['Number'] = $arr[$i],$i 是一个从 0 开始并在每次循环迭代中递增的变量。 (也就是说,我认为peipei希望每个学生从数组中接收一个数字,而不是每个学生都接收整个数组。)
    • 感谢 ajreal,我更新了我的帖子,以便更清楚地说明,我理解你的回答,但我也可以这样做吗?
    【解决方案2】:

    不,你不能。此外,您不应该这样做。它违反了第一范式。如果有固定数量的值,每个值都应该有自己的列。如果没有固定的数字,应该有一个中间表来处理多对多的关系。

    关系数据库背后的整个理念是,每列每行存储一项数据。如果你需要存储多于一项的数据,它应该在多列或多行中。

    查看我对这个问题的回答:storing multiple data in one mysql column and retrieval of data individually

    【讨论】:

    • 我不知道 1nf 是说数组不是“值”。我仍然认为,如果你每行存储不同的数组,1nf 仍然存在......如果一个“不应该这样做”,那么为什么你可以在 MySQL 以外的其他 DBMS 中存储和使用数组、数组表、矩阵等?
    • 1NF 表示不同含义的值应该存储在不同的列或行中。由于 OP 说“如果我有 5 个学生,当我执行 mysql_fetch_array 时它会自动生成 1,2,3,4,5”,很明显在这种情况下他们正在为不同的学生谈论不同的值。这应该正确拆分。
    猜你喜欢
    • 2011-05-06
    • 2015-05-14
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多