我使用php和mysql构建了一个类别导航系统。
$query = "SELECT category_name, category_desc FROM categories";
$result = mysql_query($query, $dbc)
or die (mysql_error($dbc));
while($row = mysql_fetch_array($result)) {
$catname = $row["category_name"];
$catdesc = $row["category_desc"];
echo "<li><a href='getsubs.php?category=$catname'>$catname<br /><span>$catdesc</span></a></li>";
此代码为我提供了数据库中的类别列表。
单击这些类别并请求getsubs.php文件时:
$category= $_GET['category'];
$query = "SELECT subcategory_name FROM subcategories WHERE subcategory_parent = '$category'";
$result = mysql_query($query, $dbc)
or die (mysql_error($dbc));
while($row = mysql_fetch_array($result)) {
$subcatname = $row["subcategory_name"];
echo "<li><a href='getsubsubs.php?category=$subcatname'>$subcatname</a></li>";
$category = mysql_real_escape_string($_GET['category']);
}
页面其余部分的文本(不是数据库驱动的)丢失了基本级别的任何语音标记/引号(“)。有没有人知道为什么会这样?
非常感谢提前。
编辑:之前和之后:
答案 0 :(得分:1)
由于unicode编码问题,这些?
经常出现。您的表subcategories
和categories
可能有不同的排序规则。一个可能是unicode品种之一,另一个选择较少。试试这个来快速解决问题:
-- in the top query:
SELECT
category_name COLLATE latin1_swedish_ci,
category_desc COLLATE latin1_swedish_ci
FROM categories
-- in the bottom query
SELECT subcategory_name COLLATE latin1_swedish_ci
FROM subcategories WHERE subcategory_parent = '$category'"
更正确的方法是更改两个表以使用相同的排序规则和/或使用<meta>
标记调整编码输出。 (像<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
这样的东西可能会这样做)
(顺便说一下,我或多或少要注意你应该在数据库输入周围使用mysql_real_escape_string
)
答案 1 :(得分:0)
问题与我的字符编码无关,在检查时它们都是正确的。问题是我一直在使用不同类型的引号,我仍然无法在键盘上找到它。
引用类型1 =“(这个引起了问题)
引用类型2 =“(这可以在mac上的右移键上方找到)
文本已从另一个包含这些奇怪引号的文件中复制并粘贴。 如果有人知道这个替代标记来自何处,那么了解未来是有用的。
非常感谢所有投入的人。