2016-12-14 47 views
0

嗨有没有办法从每个foreach结果中获取值? 例如,我有一个名为tblsamp的表。从foreach结果中选择值

id | data | 
1 | d1 | 
2 | d2 | 
3 | d3 | 

再放入一些查询:

$query = $this->db->query("SELECT * FROM tblsamp"); 
foreach ($query->result() as $row){ 
echo $row->data .'<br>'; 
} 

结果是:

d1 
d2 
d3 

现在我想的是我希望得到的第一个结果的价值,并从其他比较值表格等...

例如:

if('d1' == '(value from another table)'{ 
\\do something here 
} else if ('d2' == '(value from another table)'{ 
\\and so on..... 
} 

我该怎么做这个家伙? TIA!

+0

听起来像什么,你可以在加入查询做,但我们需要更多的信息 – 2016-12-14 03:08:10

+0

我认为你的意思是你有两个表,并要查看如果'Table1'中的'Value1'与'Table2'中的'Value1'相同,那么如果'Table1.Value2 == Table2.Value2',那么如果'Table1.Value3 == Table2.Value3',依此类推。那是对的吗? – Alesana

+1

是的,这是正确的@Alesana – zeus2026

回答

1

您可以在查询中添加查询,但不建议这样做 - 事情会变得非常慢。它可能是这样的:

// your original query 
$query = $this->db->query("SELECT * FROM tblsamp"); 
foreach ($query->result() as $row){ 
    // for each record in your original query, we run a new query derived from the result 
    // OBVIOUSLY you need to change this line of code to be specific to 
    // your database table's structure because some_col is probably not 
    // the name of a column in your database 
    $subquery = $this->db->query("SELECT * FROM other_table WHERE foo=" . $row->some_col); 
    $subrows = $subquery->result(); 
    // output $subrows here? 
    // note that $subrows might be an array with any number any number of records 
} 

确切的代码将取决于你正在使用的db类。如果我没有弄错,它就是代码字?编辑:它是codeigniter。

这里的正确解决方案将取决于您的数据库表定义。我强烈建议使用CodeIgniter创建一个JOIN,但如果没有一些关于你的数据库结构将如何看起来的想法以及第一个表中的每个记录存在多少个第二个表中的记录,不能提供更多的建议。

+0

感谢您的回答是它codeignter .. – zeus2026

+0

我使用这一个,但问题是第一个值的结果继续对下一个数据..所以所有的输出值是相同的 – zeus2026

1

看起来您正在使用基于$this->db->query语法的codeigniter。使用codeigniter,您可以使用$query->result_array()将表格更改为数组。

如果您确定两个表具有相同数量的行,您可以使用类似下面的内容。

$query = $this->db->query("SELECT * FROM tbl1"); 
$table1 = $query->result_array(); 
$query = $this->db->query("SELECT * FROM tbl2"); 
$table2 = $query->result_array(); 
for ($x = 0; $x <= count($table1); $x++) { 
    if ($table1[$x] === $table2[$x]) { 
     //DO SOMETHING HERE 
    } 
} 

如果$table1可能有更多的行table2,我将其更改为

$query = $this->db->query("SELECT * FROM tbl1"); 
$table1 = $query->result_array(); 
$query = $this->db->query("SELECT * FROM tbl2"); 
$table2 = $query->result_array(); 
for ($x = 0; $x <= count($table1); $x++) { 
    if (isset($table1[$x]) && isset($table2[$x])) { 
     if ($table1[$x] === $table2[$x]) { 
      //DO SOMETHING HERE 
     } 
    } else { 
     break; 
    } 
} 
+0

谢谢你先生!生病尝试这一个.. – zeus2026

1

你可以找到你有2代表的比赛,但是你可能需要做一下如何SQL更多的研究查询可以从多个表返回数据

How can an SQL query return data from multiple tables

这可能是你的基本的例子工作

$query = $this->db->query("SELECT * FROM tblsamp,tblother"); 

$rst = mysql_query($query); 

if(mysql_affected_rows() > 0) { 

    while($row = mysql_fetch_array($rst)) : 
    if($row['data'] == '$row['otherdata']') { 
     echo 'you got a match' . $row['data'] . ' In table sample to ' . $row['otherdata'] . ' In other table<br>'; 
    } 
    else { 
     echo ' no match found in results; 
    } 
} 
endwhile;