循环结果集显示额外的 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 值作为结果集的一部分。