Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 页面刷新时丢失语音标记_Php_Mysql - Fatal编程技术网

Php 页面刷新时丢失语音标记

Php 页面刷新时丢失语音标记,php,mysql,Php,Mysql,我用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["cat

我用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>";
$query=“从类别中选择类别名称、类别描述”;
$result=mysql\u查询($query,$dbc)
或者死亡(mysql_错误($dbc));
while($row=mysql\u fetch\u数组($result)){
$catname=$row[“类别名称”];
$catdesc=$row[“category_desc”];
回声“
  • ”;
    这段代码为我提供了数据库中的类别列表

    单击这些类别并请求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']);
    
    }
    
    $category=$\u GET['category'];
    $query=“从子类别中选择子类别\u名称,其中子类别\u父项='$category';
    $result=mysql\u查询($query,$dbc)
    或者死亡(mysql_错误($dbc));
    while($row=mysql\u fetch\u数组($result)){
    $subcatname=$row[“subcategory_name”];
    回声“
  • ”; $category=mysql\u real\u escape\u字符串($\u GET['category']); }
    页面其余部分的文本(不是数据库驱动的)丢失了基本级别上的任何语音标记/引号(“)。有人知道为什么会这样吗

    非常感谢

    编辑:之前和之后:


    那些
    经常因为unicode编码问题而出现。您的表
    子类别
    类别
    可能有不同的排序规则。一个可能是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'"
    
    更正确的方法是将两个表更改为使用相同的排序规则和/或使用
    标记调整编码输出。(类似
    的方法可能会这样做)


    (顺便说一句,我或多或少必须指出,您应该在DB输入周围使用
    mysql\u real\u escape\u string

    问题与我的字符编码无关,经过检查,字符编码都是正确的。问题是我一直在使用一种不同类型的引号,但我仍然无法在键盘上找到它

    Quote type 1=“(这是导致问题的原因)
    Quote type 2=“(这可以在mac上的右shift键上方找到)

    文本是从另一个包含这些奇怪引号的文件中复制和粘贴的。 如果有人知道这个替代标记来自何处,那么将来知道它将是有用的


    非常感谢您的所有输入人员。

    什么是“语音标记”?引号(“)?同样,您的代码很容易受到SQL注入攻击……在执行查询后,为什么要在循环中转义类别值?是的,一个引号(一直称为语音标记)。是的。甚至只是
    $category=mysql\u real\u escape\u string($_GET['category'])
    。转义的全部目的是防止用户提供的数据破坏您的查询。必须在数据到达数据库之前完成。有关详细信息,请参阅details@Richard:这是一个字符集不匹配的问题。类似于数据库提供UTF-8数据,而您的页面呈现为ISO-8859,反之亦然,这取决于它是如何呈现的,将进入数据库。您需要确保以一致的字符集收集、存储、检索和显示数据,并使用正确的字符集呈现页面。听起来您的数据库中存储了两种不同的引号编码。谢谢您的回答。我会的与其使用任何快速修复方法,不如第一次就把它弄对,但知道我能做到这一点非常好。谢谢。我将考虑更改两个表的排序规则:0)@理查德:如果你还没有读到,我也会读乔尔·斯波尔斯基的。@马特·吉布森:太棒了。我几周前读到了,还没来得及读。哈哈。这会教我的!第二类是“打字机”的引用;第一类是“真正的”引号,一种开放的“卷发”引号。如果要在Mac电脑上从内存中键入一个引号,请使用方括号键和Alt+[和Shift+Alt+[。对于单引号,请使用与]键相同的技巧。有关可能需要的更多信息,请参阅。没有理由使用“卷曲”如果您使用UTF8,引号应该会引起问题,例如,正如您所看到的,堆栈溢出可以很好地处理它们。@马特·吉布森谢谢马特!所有内容都设置为UTF8,但我仍然无法使用真正的引号。所有表中的所有列都设置为UTF8\U unicode\U ci,然后我的元数据如下所示: