所以,我在这里遇到了一个奇怪的情况:
我有一个表单,该表单有几个类别,通过 Json 加载。
我引用的表单部分的代码如下:
<div>
<select>
<?php include_once("php_loader/getAllCategoriesOptions.php"); ?>
</select>
</div>
到目前为止一切顺利,然后我有那个 php 文件:
<?php
$con = $con = mysqli_connect("localhost","XXX","XXX","XXX");
mysqli_query($con,"SET NAMES UTF8"); /
if (!$con)
{
die('Could not connect: ' . mysqli_error());
}
$result = mysqli_query($con,"SELECT * FROM categories WHERE IdCategory > 1") or die;
while($row = mysqli_fetch_assoc($result))
{
$output[]=$row;
}
print json_encode($output);
foreach($output as $json){
echo'<option value="'.$json['IdCategory'].'">'.$json['Category'];
}
mysqli_close($con);
?>
Wich 返回以下输出:
[{"IdCategory":"2","Category":"Hobbies"},{"IdCategory":"3","Category":"Tattoos"},{"IdCategory":"4","Category":"Trips"},{"IdCategory":"5","Category":">Esoteric"},{"IdCategory":"6","Category":"Books"}]
爱好塔托斯旅行深晦书。
目前为止,一切都好。但是当我在我的 html 页面上包含它时,它会给我以下输出:
<div>
<select>
[{"IdCategory":"0","Category":"All Categories"},{"IdCategory":"1","Category":"Technology"},{"IdCategory":"2","Category":"Hobbies"},{"IdCategory":"3","Category":"Tattoos"},{"IdCategory":"4","Category":"Trips"},{"IdCategory":"5","Category":"Esoteric"},{"IdCategory":"6","Category":"Books"},{"IdCategory":"2","Category":"Hobbies"},{"IdCategory":"3","Category":"Tattoos"},{"IdCategory":"4","Category":"Trips"},{"IdCategory":"5","Category":"Esoteric"},{"IdCategory":"6","Category":"Books"}]
<option value="0">All Categories</option>
<option value="1">Technology</option>
<option value="2">Hobbies</option>
<option value="3">Tattoos</option>
<option value="4">Trips</option>
<option value="5">Esoteric</option>
<option value="6">Books</option>
<option value="2">Hobbies</option>
<option value="3">Tattoos</option>
<option value="4">Trips</option>
<option value="5">Esoteric</option>
<option value="6">Books </option>
</select>
</div>
(我从mozzila firebug中获取了这个值 - 在网站本身中只出现了两次值(
这里可能发生了什么??我无法理解哪里出了问题。
可能重要的是要注意我之前有一个类似的 php 文件运行,并且 php 文件加载该表的每个条目 - 我怀疑这可能与此有关,但我无法获得解决方案(我在同一个 html 页面中两次查询同一个表以获得不同的输出, 一个给我几个,每个类别一个,另一个给我几个,如上面所述(。
提前谢谢。
PS:正如所问的:这是我之前在同一代码中使用的另一个php文件:
<?php
$con = $con = mysqli_connect("localhost","ZZZ","ZZZ","sametable");
mysqli_query($con,"SET NAMES UTF8"); //é preciso meter isto em utf-8 senão não manda nada
if (!$con)
{
die('Could not connect: ' . mysqli_error());
}
$result = mysqli_query($con,"SELECT * FROM categories") or die;
while($row = mysqli_fetch_assoc($result))
{
$output[]=$row;
}
foreach($output as $json){
echo
'<li>
<a class="item">'.$json['Category'].'</a>
</li>';
}
mysqli_close($con);
?>
所以,似乎我发现了错误(这是一个非常愚蠢的错误(。
我告诉我在同一代码上运行 2 个 php 文件没有问题(它没有(,但我不知道我不能以相同的方式命名两个文件变量,所以,第一个 php 的$output出现在第二个 php 文件中,结果给了我 $output$output。
将第二个文件的名称更改为 $output 2 解决了此问题。