所以我正在尝试全新的东西(对我来说)。我有一个PHP文件,我尝试在其中检索2个表的数据并替换匹配的值。因为我不太确定自己在做什么,所以有点卡住了:)这就是我想要的:
我的mysql数据库中有2个表。
表“广告”的列为“ logo_fid”。
表“文件”具有列“ FID”和“文件路径”。
现在,我想在“广告”表中的“ cc_logo”列的值echo
。
但是,在此之前,我想看看表“文件”中是否在“ fid”卷中存储了相应的值,如果是,我想回显“ filepath”的值而不是“ logo_fid”的值。
因此,基本上,我想要的是将logo_fid列的返回值(如果该值与“ fid”列中的值匹配)替换为相应的“ filepath”值。
希望我能说清楚。无论如何,我有此代码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();
?>
最佳答案
似乎可以将它作为一个查询来完成。
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,但是作为答案的在线搜索表明这将是类似的...
$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>';
}
关于php - 如果另一个查询(表)中存在值,是否要替换值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27693257/