循环结果集显示额外的 br 标签
Looping resultset displays additional br tag
我是 PHP 和 PDO 的新手,正在尝试从一个简单的数据库中获取记录。我创建并成功地做到了,但出于某种奇怪的原因,当我 fetchAll()
我的记录并在 echo
语句中添加一个 <br>
标签时,它会添加一个额外的 <br>
在我的输出中的随机位置。我不确定为什么会这样。这是因为我的数据库中有额外的白色 space 吗?
我尝试在网上和其他关于 SO 的主题中寻找解决方案;也许我没有在正确的地方寻找我的问题。
我觉得这是白色的问题space,也许我需要为此使用 trim
?
这是我的代码:
// Set all fetch requests as an object by default
$dbo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
$admin = 'ADMIN';
$adminLive = 'ADMIN-live';
$adminType = 'ADMIN_US_Type';
$customusDomestic = 'US_domestic';
$adminChina = 'China_admin';
$adminIndia = 'India_admin';
$adminCustom = 'ADMIN_custom';
$customusaustinCulver = 'US_Austin_Culver';
$customuschinaTokyo = 'US_China_Tokyo';
$customcorkuaeBayarea = 'Cork_UAE_BayArea';
$customchinashanghaiBeijing = 'China_Shanghai_Beijing';
$adminselfMoves = 'ADMIN_selfmoves';
$adminmilanVienna = 'ADMIN-milan-vienna';
$custombayareaSeattle = 'Bayarea_Seattle_admin';
// Prepare the query
$sql = 'SELECT DISTINCT usergroup
FROM plus_signup
WHERE usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?';
$stmt = $dbo->prepare($sql);
// Execute the query
$stmt->execute([$admin,$adminLive,$adminType,$customusDomestic,$adminChina,$adminIndia,$adminCustom,$customusaustinCulver,$customuschinaTokyo,$customcorkuaeBayarea,$customchinashanghaiBeijing,$adminselfMoves,$adminmilanVienna,$custombayareaSeattle]);
$usergroups = $stmt->fetchAll();
foreach($usergroups as $locations) {
// This works fine but my output is adding an extra br in some occurances of the loop
echo $locations->usergroup . "<br/>";
}
Output in Browser I'm getting
未经测试,但逻辑应该是正确的:
$dbo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_NUM); // fetch as indexed array
$dbo->setAttribute(PDO::NULL_TO_STRING: NULL); // nulls to empty strings
$nots = [
'',
$admin,
$adminLive,
$adminType,
$customusDomestic,
$adminChina,
$adminIndia,
$adminCustom,
$customusaustinCulver,
$customuschinaTokyo,
$customcorkuaeBayarea,
$customchinashanghaiBeijing,
$adminselfMoves,
$adminmilanVienna,
$custombayareaSeattle
];
$placeholders = implode(',', array_fill(0, count($nots), '?'));
$sql = "SELECT DISTINCT usergroup FROM plus_signup WHERE usergroup NOT IN ($placeholders)";
try {
$stmt = $dbh->prepare($sql);
$stmt->execute($nots);
$usergroups = $stmt->fetchAll();
echo implode('<br>', $usergroups);
} catch (PDOException $e) {
echo $e->getMessage(); // not to be shown publicly
}
这应该会消除您的 empty/null 值作为结果集的一部分。
我是 PHP 和 PDO 的新手,正在尝试从一个简单的数据库中获取记录。我创建并成功地做到了,但出于某种奇怪的原因,当我 fetchAll()
我的记录并在 echo
语句中添加一个 <br>
标签时,它会添加一个额外的 <br>
在我的输出中的随机位置。我不确定为什么会这样。这是因为我的数据库中有额外的白色 space 吗?
我尝试在网上和其他关于 SO 的主题中寻找解决方案;也许我没有在正确的地方寻找我的问题。
我觉得这是白色的问题space,也许我需要为此使用 trim
?
这是我的代码:
// Set all fetch requests as an object by default
$dbo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
$admin = 'ADMIN';
$adminLive = 'ADMIN-live';
$adminType = 'ADMIN_US_Type';
$customusDomestic = 'US_domestic';
$adminChina = 'China_admin';
$adminIndia = 'India_admin';
$adminCustom = 'ADMIN_custom';
$customusaustinCulver = 'US_Austin_Culver';
$customuschinaTokyo = 'US_China_Tokyo';
$customcorkuaeBayarea = 'Cork_UAE_BayArea';
$customchinashanghaiBeijing = 'China_Shanghai_Beijing';
$adminselfMoves = 'ADMIN_selfmoves';
$adminmilanVienna = 'ADMIN-milan-vienna';
$custombayareaSeattle = 'Bayarea_Seattle_admin';
// Prepare the query
$sql = 'SELECT DISTINCT usergroup
FROM plus_signup
WHERE usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?
AND usergroup != ?';
$stmt = $dbo->prepare($sql);
// Execute the query
$stmt->execute([$admin,$adminLive,$adminType,$customusDomestic,$adminChina,$adminIndia,$adminCustom,$customusaustinCulver,$customuschinaTokyo,$customcorkuaeBayarea,$customchinashanghaiBeijing,$adminselfMoves,$adminmilanVienna,$custombayareaSeattle]);
$usergroups = $stmt->fetchAll();
foreach($usergroups as $locations) {
// This works fine but my output is adding an extra br in some occurances of the loop
echo $locations->usergroup . "<br/>";
}
Output in Browser I'm getting
未经测试,但逻辑应该是正确的:
$dbo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_NUM); // fetch as indexed array
$dbo->setAttribute(PDO::NULL_TO_STRING: NULL); // nulls to empty strings
$nots = [
'',
$admin,
$adminLive,
$adminType,
$customusDomestic,
$adminChina,
$adminIndia,
$adminCustom,
$customusaustinCulver,
$customuschinaTokyo,
$customcorkuaeBayarea,
$customchinashanghaiBeijing,
$adminselfMoves,
$adminmilanVienna,
$custombayareaSeattle
];
$placeholders = implode(',', array_fill(0, count($nots), '?'));
$sql = "SELECT DISTINCT usergroup FROM plus_signup WHERE usergroup NOT IN ($placeholders)";
try {
$stmt = $dbh->prepare($sql);
$stmt->execute($nots);
$usergroups = $stmt->fetchAll();
echo implode('<br>', $usergroups);
} catch (PDOException $e) {
echo $e->getMessage(); // not to be shown publicly
}
这应该会消除您的 empty/null 值作为结果集的一部分。