2014-12-29 50 views
0

所以我想嘗試一些全新的東西(對我來說)。我有一個PHP文件,我嘗試檢索2個表的數據,如果它們匹配,則替換值。由於我不確定我在做什麼,我有點卡住:)這是我想要的: 我在我的mysql數據庫中有2個表。如果存在於另一個查詢(表)中,則替換值?

表'廣告'具有'logo_fid'列。 表'文件'具有'fid'和'filepath'列。

現在我想echo「廣告」表中'logo_fid'列的值。 然而,在此之前,我想看看是否在表'文件'中對應的值存儲在'fid'卷中,如果是這樣,我想回顯'filepath'的值而不是'logo_fid的值」。 因此,基本上我想要的是如果此值與'fid'列中的值匹配,則使用相應的'filepath'值替換logo_fid列的返回值。

希望我說清楚了。無論如何,我有這個代碼atm。希望有人能幫我解決這個問題。非常感謝!

<?php 
//connection info xxxx 
// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
//advertisement SELECT 
$sql = "SELECT logo_fid FROM advertisement ORDER BY nid ASC"; 
$result = $conn->query($sql); 

//advertisement SELECT 
$sql2 = "SELECT fid, filepath FROM files"; 
$result2 = $conn->query($sql2); 

if ($result->num_rows > 0 && $result2->num_rows > 0) { 
    // output data of each row 
    while(($row = $result->fetch_assoc()) && ($row2 = $result2->fetch_assoc())){ 

    //So after i received all the info i'd like to check if the value of logo_fid matches with fid and if so replace the value with the value of filepath 
     if ($row["logo_fid"] == $row2["fid"]) : 
     echo $row2["filepath"]; 
     else : 
     echo $row["logo_fid"]; 
     endif; 
     echo '<br>'; 



    } 
} else { 
    echo "0 results"; 
} 
$conn->close(); 
?> 
+0

我不; t知道問題是什麼,因爲我不知道如何編程我的請求。這就是爲什麼我描述了我的要求。 – RobbertT

回答

1

看起來像這樣可以做爲一個查詢。

SELECT A.logo_Fid, F.Fid, F.filePath, coalesce(F.FilePath, Logo_Fid) as ValueYouWant 
FROM advertisement A 
LEFT JOIN files F 
on A.logo_Fid = F.FID 

然後,您可以在沒有內聯邏輯的情況下回顯ValueYouWant。

連接將Fid和logo_fid上的兩個表關聯起來。 如果找到匹配項,則Valueyouwant將包含f.filepath,如果未找到匹配項,logo_fid將處於valueyouwant狀態。

由於這是使用LEFT連接,所有來自廣告的值將被返回,並且只有來自文件的相關記錄纔會被返回。

所以顯示...

我沒有做很多PHP,但是這是accpted作爲一個答案網上搜索表明它會是這樣的......

$sql=" SELECT A.logo_Fid, F.Fid, F.filePath, coalesce(F.FilePath, Logo_Fid) as ValueYouWant 
    FROM advertisement A 
    LEFT JOIN files F 
    on A.logo_Fid = F.FID ORDER BY NID asc" 

$result = mysql_query($sql); 
while($row = mysql_fetch_array($result)) { 
echo $row['ValueYouWant']; 
echo '<br>'; 
} 
+0

嗨,非常感謝。因此,這可以歸結爲: '//廣告選擇 $ SQL =「SELECT A.logo_Fid,F.Fid,F.filePath,凝聚(F.FilePath,Logo_Fid)作爲ValueYouWant 從廣告的 LEFT JOIN文檔F A.logo_Fid = F.FID「; $ result = $ conn-> query($ sql);' 然後我如何迴應ValueYouWant結果?再次感謝! – RobbertT

+0

再次感謝。嘗試了多件事,但沒有得到任何回報。我確實在$ sql的末尾放了一個';'。所以有些東西不起作用。我看到SELECT中的表/列名有大寫字母,這是有原因的嗎?我試圖讓它們與我的mysql數據庫中的名稱匹配,但這沒有什麼區別。再次感謝! – RobbertT

相關問題