我有一个 HTML选择使用 SELECT DISTINCT 由 SQL 查询填充的表单......这个想法是不显示数据库中的重复值,它几乎可以工作,但在某些情况下它会出现问题。为了填充 SQL 列,我使用 PHP 读取带有分隔符和分解功能的 TXT 文件。如果我在 TXT 文件中有 10 个重复的列,在我的 HTML 上它显示 2,而不是只有 1...我注意到 1 包含来自数据库的 9 个条目,而另一个有 1 个条目始终是TXT 文件的最后一行。恢复:TXT 文件的最后一行总是在 HTML 选择表单上重复。检查数据库,一切正常,我真的不知道为什么它总是在最后一个重复。我讲述了制作 SQL 条目的 PHP,因为我 我不确定问题出在包含 HTML 选择的 PHP 中还是在填充数据库的 PHP 中……我相信问题出在带有 HTML 选择的 PHP 中,因为我正在查看数据库并且一切正常. 这个 php 中的 SQL 查询是这样的:
<td class="formstyle"><select name="basenamelst" class="formstyle" id="basenamelst">
<option value="Any">Any</option>
<?
$sql = mysql_query("SELECT DISTINCT basename FROM dumpsbase where sold=0");
while($row = mysql_fetch_assoc($sql))
{
if($row['basename'] == "")
{
echo '<option value="'.htmlspecialchars($row['basename'], ENT_QUOTES, 'UTF-8').'">unknOwn</option>';
}
else
{
echo '<option value="'.htmlspecialchars($row['basename'], ENT_QUOTES, 'UTF-8').'">'.htmlspecialchars($row['basename'], ENT_QUOTES, 'UTF-8').'</option>';
}
}
?>
</select>
请记住:如果我将 10 个重复列上传到数据库,它会在选择时显示 2。一个有 9 个条目,另一个有 1 个条目(始终是我的 TXT 文件的最后一行)......好吧,很多人告诉我修剪()列并且它仍然显示重复......所以我得出的结论是为数据库加载 TXT 时遇到一些问题。这是我将值放入数据库的代码:
$file = fopen($targetpath, "r") or exit("Unable to open uploaded file!");
while(!feof($file))
{
$line = fgets($file);
$details = explode(" | ", $line);
foreach($details as &$value) // clean each field
{
$value = mysql_real_escape_string($value);
if($value == "")
{
$value = "NONE";
}
}
unset($value);
mysql_query("INSERT INTO dumpsbase VALUES('NULL', '$details[0]', '$details[1]', '$details[2]', '$details[3]', '$details[4]', '0', '$price', 'NONE', now(), 'NONE', 'NONE')") or die ("Uploading Error!");