我有一个已转换为 MySQL 的 Access 数据库。我有一个表格,联系人,其中包含“EmailAddress”、“HideEmailAddress”、“FaxNumber”、“HideFaxNumber”、“PhoneNumber”和“HidePhoneNumber”字段。隐藏字段都是复选框,因此值为 1 或 0,其中 1 为 TRUE。
如果隐藏字段的值为 1,我需要在我的 MySQL Select 语句或 PHP 查询中不显示信息。此外,通常只有三个字段中的一个会被标记为隐藏,所以我不能做毯子“如果其中任何一个是 1 隐藏所有这些。” 我需要将查询输出到网页,并根据每列隐藏字段的值显示或隐藏上面的三个字段。我的 SELECT 语句正在检索所有六个值,而 PHP 正在将其转换为数组,但我认为数组比较在这里没有任何帮助。
我只是不知道我应该在这里做什么。我一直在寻找几天,似乎没有什么能接近我需要的。我有一个非常特别的 if-elseif-else 在我的 PHP 循环中运行,以便在截止日期前完成它,但这需要 9 或 12 条不同的语句,我确信有更好的方法来做到这一点。
这是我的代码。我已经从原始查询中删减了很多,但是该查询确实有效,所以如果这里有拼写错误,那就是删减了。我只是不知道如何根据另一个字段的值来抑制一个字段。这也是为什么我在 SELECT 语句中有两个 AS 语句的原因 - 在原始查询中,有来自五个不同表的信息,并且它们都有“FaxNumber”和“EmailAddress”。我离开了 AS,以防万一它改变了事情。
<?php
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Error connecting to MySQL server.');
$query = 'SELECT Contact.CompanyID, Contact.WebContact, Contact.FirstName, Contact.LastName, Contact.WorkPhone, Contact.HidePhoneNumber, Contact.FaxNumber AS ConFaxNumber, Contact.HideFaxNumber, Contact.EmailAddress AS ConEmailAddress, Contact.HideEmailAddress FROM Contact WHERE TDAT_Contact.WebContact = "1"';
mysqli_query($dbc, $query);
if($r = mysqli_query($dbc, $query)) {
while ($row = mysqli_fetch_array($r)) {
if(($row['HidePhoneNumber'] == 1) && ($row['HideFaxNumber'] == 1)) {
echo '<hr><div align="query"><span class="strong">Contact:</span> ' . $row['FirstName'] . ' ' . $row['LastName'] . '<br /><br /><span class="strong">Direct Email Address: </span>' . $row['ConEmailAddress'] . '</div>';
} elseif($row['HidePhoneNumber'] == 0) && ($row['HideFaxNumber'] == 0) {
echo '<hr><div align="query"><span class="strong">Contact:</span> ' . $row['FirstName'] . ' ' . $row['LastName'] . '<br /><span class="strong">Direct Telephone: </span>' . $row['WorkPhone'] . '<br /><span class="strong">Direct Fax: </span>' . $row['ConFaxNumber'] . '<br /><span class="strong">Direct Email Address: </span>' . $row['ConEmailAddress'] . '</div>';}
}
...
else { // Query didn't run.
echo '<p style="color: red;">Could not retrieve the data because:<br />' . mysqli_error($dbc) . '.</p><p>The query being run was: ' . $query . '</p>';
}
}}
mysqli_close($dbc); // Close the connection.
?>