2016-12-14 76 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;