【发布时间】:2018-07-04 08:28:40
【问题描述】:
我对 PHP 和 PDO 非常陌生,并且正在尝试从一个简单的数据库中获取记录。我创建并设法成功地做到了,但出于某种奇怪的原因,当我 fetchAll() 我的记录并在 echo 语句中添加一个 <br> 标记时,它在我的随机位置添加了一个额外的 <br>输出。我不确定为什么会这样。这是因为我的数据库中有多余的空白吗?
我尝试在网上和其他关于 SO 的主题寻找解决方案;也许我没有找到合适的地方来解决我的问题。
我觉得这是空白的问题,也许我需要为此使用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/>";
}
【问题讨论】:
-
也许在回显之前检查 $locations->usergroup 是否为空
-
您更愿意使用
NOT IN ()吗?您应该清理数据库值。你有空值吗?你有null值吗?最后是否有带有<br>标签的非空值?我们看不到,所以我们不知道。trim()不会杀死<br>,但你可以strip_tags()。 -
好的,谢谢你,我会试试这个并回复你。
标签: php pdo prepared-statement filtering resultset