Php 我的if语句未按预期工作
如果Php 我的if语句未按预期工作,php,database,if-statement,foreach,echo,Php,Database,If Statement,Foreach,Echo,如果entry\u type是我所在页面的post或pagina,则此代码根据我在entry\u type列上的数据量复制元标记。它正在从if和else打印meta标记 $mt = $conn->query("SELECT entry_type FROM bn_publicacao")->fetchAll(); foreach ($mt as $FB) { if ($FB['entry_type'] == 'pagina'){ echo '<met
entry\u type
是我所在页面的post
或pagina
,则此代码根据我在entry\u type
列上的数据量复制元标记。它正在从if
和else
打印meta
标记
$mt = $conn->query("SELECT entry_type FROM bn_publicacao")->fetchAll();
foreach ($mt as $FB) {
if ($FB['entry_type'] == 'pagina'){
echo '<meta property="og:type" content="website">';
} else{
echo '<meta property="og:type" content="article">';
echo '<meta property="article:author" content="">';
echo '<meta property="article:publisher" content="">';
echo '<meta property="article:published_time" content="">';
echo '<meta property="article:modified_time" content="">';
}
}
- 结果1:
- 结果2:
- 结果3:
我的代码怎么了?我如何解决它呢?
fetchColumn
只返回一个结果。可以使用将所有结果作为数组返回的
您需要遍历结果,因为它将是一个数组。代码如下:
$mtFBs = $conn->query("SELECT entry_type FROM bn_publicacao")->fetchAll();
foreach ($mtFbs as $mtFb) {
if ($mtFB['entry_type'] == 'pagina'){
echo '<meta property="og:type" content="website">';
} else{
echo '<meta property="og:type" content="article">';
echo '<meta property="article:author" content="">';
echo '<meta property="article:publisher" content="">';
echo '<meta property="article:published_time" content="">';
echo '<meta property="article:modified_time" content="">';
}
}
$mtFBs=$conn->query(“从bn_publicacao中选择条目类型”)->fetchAll();
foreach($mtFbs作为$mtFb){
如果($mtFB['entry_type']=='pagina'){
回声';
}否则{
回声';
回声';
回声';
回声';
回声';
}
}
验证什么fetchColumn()
returns@Akintunde-Rotimi你的意思是var\u dump($mtFB)代码>?结果为NULLif var_dump($mtFB);如果为null,则可能您的查询没有返回任何数据,并且始终呈现其他部分?@SameerJain请再次检查我的问题,我已编辑。@user236945896您的代码正按照要求执行,因此您将看到大量重复的元标记。您需要的是使数组唯一,可能是像“从bn_publicacao中选择不同的条目类型”这样的查询,那么,他们应该使用什么来代替呢?你没有给他们太多的机会,尤其是他们是新手。“你现在在回答中所说的,作为一个评论是合适的,IMHO。”FunkFortyNiner说得很好。答案通过解决方案得到了改进。谢谢:-)这对他们很有帮助。@Jacob请再次检查我的问题,我根据您的回答对我的代码做了一些更改。我编辑了我的问题,添加了更多信息。@user236945896我建议您使用此查询选择DISTINCT(entry_type)作为bn_publicao中的entry_type,其中entry_type不为NULL
然后在if和else语句中,您应该打印r($FB)
。
$mt = $conn->query("SELECT entry_type FROM bn_publicacao WHERE entry_type IS NOT NULL GROUP BY entry_type")->fetchAll();
foreach ($mt as $FB) {
print_r($mt); //Result 1
if ($FB['entry_type'] == 'pagina'){
print_r($mt); //Result 2
//code posted on the question
} else{
print_r($mt); //Result 3
//code posted on the question
}
}
$mtFBs = $conn->query("SELECT entry_type FROM bn_publicacao")->fetchAll();
foreach ($mtFbs as $mtFb) {
if ($mtFB['entry_type'] == 'pagina'){
echo '<meta property="og:type" content="website">';
} else{
echo '<meta property="og:type" content="article">';
echo '<meta property="article:author" content="">';
echo '<meta property="article:publisher" content="">';
echo '<meta property="article:published_time" content="">';
echo '<meta property="article:modified_time" content="">';
}
}