【问题标题】:SELECT $array[$id] in a mysql query在 mysql 查询中选择 $array[$id]
【发布时间】:2013-05-30 10:36:29
【问题描述】:

现在,我知道这是不好的做法,但这就是我想要做的。

这就是我现在拥有的:

$max_str = "MAX(CASE WHEN p_list.p_name";
$case_str = "THEN (CASE WHEN check_box = '2' THEN '2' WHEN check_box = '1' THEN '1' WHEN check_box = '0' THEN '0' WHEN checkbox = '1' THEN '1' WHEN checkbox = '0' THEN '0' END) ELSE '-' END)";

@$result = MYSQL_QUERY("SELECT ID, Description, checkbox,

  $max_str = '$row[0]' $case_str '$row[0]',
  $max_str = '$row[1]' $case_str '$row[1]',
  $max_str = '$row[2]' $case_str '$row[2]',
  $max_str = '$row[3]' $case_str '$row[3]'


FROM p_list
JOIN $databasetable
        ON $databasetable.P_ID = p_list.P_ID
LEFT JOIN udata_store 
        ON $databasetable.C_ID = udata_store.C_ID

WHERE p_list.J_ID = $jid and $databasetable.J_ID = $jid
GROUP BY ID");

$row[$id] 包含从不同表中提取的行值,它们可以随时更改。基本上$id 可以从0 变为n

我现在的查询工作正常,只是我必须多次输入
$max_str = '$row[0+n]' $case_str '$row[0+n]',(其中 n 是我输入的行数。)以免行数用完。

我想知道如何在这样的查询中加入一个循环:

@$result = MYSQL_QUERY("SELECT ID, Description, checkbox,

$i=0;
while($i<$num_of_rows_from_table){
echo "$max_str = '$row[$i]' $case_str '$row[$i]',"
$i++;
}

...

虽然我不知道如何处理循环中的最后一个,

有什么想法吗?

【问题讨论】:

    标签: php mysql sql arrays select


    【解决方案1】:

    去掉最后一个逗号试试这个。

    $str = '';
    $i=0;
    while($i<$num_of_rows_from_table){
       $str .= "$max_str = '$row[$i]' $case_str '$row[$i]',";
       $i++;
    }
    
    $str = substr($str, 0, -1);
    echo $str;
    

    【讨论】:

    • 太棒了!非常感谢。
    【解决方案2】:

    简单的解决方案:

    $i = 0;
    while($i<$num_of_rows_from_table)
    {
        // prepend a comma for every element after the first
        if ($i > 0)
            echo ", ";
    
        echo "$max_str = '$row[$i]' $case_str '$row[$i]'";
    
        $i++;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多