我已经在这个主题上搜索了几天,但我没有找到解决方案,所以也许它不可能?
目前,我有一些页面可以拨打数十个MySQL来查询姓名和电子邮件信息。
<?php echo get_officer_listing("president"); ?>
这些调用函数get_officer_listing($ position)
$sql = "SELECT OfficeTitle, OfficerName, OfficeEmail FROM officers WHERE officeshort = \"$position\"";
$officer = mysql_query($sql);
while($field = mysql_fetch_array($officer)) {
$title = $field["OfficeTitle"];
$name = $field["OfficerName"];
$email = $field["OfficeEmail"];
}
if (empty($name)) {$name = "Vacant";}
if (empty($email)) {$mailto = $name;}
else {$mailto = '<a href="mailto:'.$email.'">'.$name.'</a>';}
echo '<b>'.$title.'</b><br>'.$mailto.'<br>';
}
这适用于将具有Office名称和官员姓名的单个官员列表作为mailto链接返回。
我想要做的是调用一次军官表并将所有相关记录存储在一个以officerShortName索引的多变量关联数组中。然后,在每个军官列表中,我可以回显数组值,如
<?php
$OfficeShortName = 'president';
echo $array[$OfficeShortName]['position'];
echo $array[$OfficeShortName]['OfficerName'];
echo $array[$OfficeShortName]['OfficeEmail'];
?>
到目前为止,我已经能够将记录拉入数组并在While循环中打印出所有记录。但是我还没能在循环之后调用单个记录的值。
我只是不了解数组是如何工作的?或者有办法做到这一点? 任何帮助将不胜感激。
答案 0 :(得分:1)
你几乎就在那里,但你需要跟踪while()循环中的数组。
以下是一些示例代码,显示如何打印所有行以及单个类型位置的行
由于您没有提供架构,我估计您的数据库看起来像这样
OfficerShort OfficerTitle OfficerName OfficerEmail
------------ ------------- -------------- ----------------
president President Mike mike@nowhere.com
vice-president Vice-President John john@nowhere-else.com
treasurer Treasurer Tyler
member Member Clem clem@foo.com
member Member Blato blato@bar.com
member Member Casper
以下代码,重新使用并以您的开始为基础。您应该将PDO对象用于数据库连接
$sql = "SELECT OfficerTitle, OfficerName, OfficeEmail FROM officers WHERE officeshort = \"$position\"";
$officerResult = mysql_query($sql);
$allOfficers[$postion] = [];
while($row = mysql_fetch_array($officerResult)) {
$title = $row["OfficerTitle"];
$name = !empty($row["OfficerName"]) ? $row["OfficerName"] : 'Vacant';
$email = $row["OfficerEmail"];
$mailto = !empty($row['OfficerEmail']) ? '<a href="mailto:'.$email.'">'.$name.'</a>' : $name;
$allOfficers[$postion]['OfficerTitle'] = $title;
$allOfficers[$postion]['OfficerName'] = $name;
$allOfficers[$postion]['OfficerEmail'] = $mailto;
}
$ allOfficers数组现在将填充如下:
$allOfficers = [
'president' => [
'OfficerTitle' => 'President',
'OfficerName' => 'Mike',
'OfficerEmail' =>
'mike@nowhere.com'
],
'vice-president' => [
'OfficerTitle' => 'Vice-President',
'OfficerName' => 'John',
'OfficerEmail' =>
'john@nowhere-else.com'
],
'treasurer' => [
'OfficerTitle' => 'Treasurer',
'OfficerName' => 'Tyler',
'OfficerEmail' => ''
],
'member' => [
'OfficerTitle' => 'Member',
'OfficerName' => 'Clemo',
'OfficerEmail' => 'clem@foo.com'
],
'member' => [
'OfficerTitle' => 'Member',
'OfficerName' => 'Blato',
'OfficerEmail' => 'blato@bar.com'
],
'member' => [
'OfficerTitle' => 'Member',
'OfficerName' => 'Casper',
'OfficerEmail' => ''
]
];
您可以像这样一次查看所有数据:
foreach ($allOfficers as $postion => $data) {
$title = $data["OfficerTitle"];
$name = !empty($data["OfficerName"]) ? $data["OfficerName"] : 'Vacant';
$email = $data["OfficerEmail"];
$mailto = !empty($email) ? '<a href="mailto:'.$email.'">'.$name.'</a>' : $name;
$mailto = !empty($email) ? '<a href="mailto:'.$email.'">'.$name.'</a>' : $name;
echo "Title = " . $title . " , mail = " . $mailto . "\n";
}
//输出
Title = President , mail = <a href="mailto:mike@nowhere.com">Mike</a>
Title = Vice-President , mail = <a href="mailto:john@nowhere-else.com">John</a>
Title = Treasurer , mail = Tyler
Title = Member , mail = Casper
如果您希望一次只能看到1个位置,可以通过
进行var_export($allOfficers['vice-president']);
//输出
array (
'OfficerTitle' => 'Vice-President',
'OfficerName' => 'John',
'OfficerEmail' => 'john@nowhere-else.com',
)