所以我正在尝试一些全新的东西(对我而言)。我有一个PHP文件,我尝试检索2个表的数据,如果匹配则替换值。由于我不确定我在做什么,我有点卡住了:)这就是我想要的: 我的mysql数据库中有2个表。
表'广告'有列' logo_fid'。 表'文件'有列' fid'和' filepath'。
现在我想echo
' logo_fid' '广告中的列'表。
然而,在此之前,我想看看表格中是否有文件'相应的值存储在< fid' volumn如果是这样的话我想回应一下'filepath'而不是' logo_fid'的价值。
所以基本上我想要的是替换logo_fid列的返回值,如果这个值与'fid'中的值匹配列,带有相应的'文件路径'值。
<?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 :(得分: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>';
}