如果存在于另一个查询(表)中,则替换值?

时间:2014-12-29 17:23:10

标签: php mysql

所以我正在尝试一些全新的东西(对我而言)。我有一个PHP文件,我尝试检索2个表的数据,如果匹配则替换值。由于我不确定我在做什么,我有点卡住了:)这就是我想要的: 我的mysql数据库中有2个表。

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

现在我想echo' logo_fid' '广告中的列'表。 然而,在此之前,我想看看表格中是否有文件'相应的值存储在< fid' volumn如果是这样的话我想回应一下'filepath'而不是' logo_fid'的价值。 所以基本上我想要的是替换logo_fid列的返回值,如果这个值与'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();
?>

1 个答案:

答案 0 :(得分: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.file路径,如果未找到匹配项,则logo_fid将在valueYouwant中。

由于这是使用LEFT连接,因此将返回广告中的所有值,并且仅返回文件中的相关记录。

所以要显示......

我没有做太多的PHP,但是一个被认为是答案的在线搜索表明它会是这样的......

 $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>';
}