PHP撇号问题

PHP撇号问题,php,sql,apostrophe,Php,Sql,Apostrophe,我得到了一个数据库,它的内容我无法修改。一切都很顺利,直到我通过链接传递URL中的一些变量,其中一个变量(即“Frank的二手车”)中的撇号导致后面的变量无法传递 这是当前正在通过的内容: &var1=600&miles=44000&var2=Frank 当它应该是这样的时候: &var2=600&miles=44000&var2=Frank's%20Used%20Cars%20&var3=111111111 正如我所说,问题在于撇号。

我得到了一个数据库,它的内容我无法修改。一切都很顺利,直到我通过链接传递URL中的一些变量,其中一个变量(即“Frank的二手车”)中的撇号导致后面的变量无法传递

这是当前正在通过的内容:

&var1=600&miles=44000&var2=Frank
当它应该是这样的时候:

&var2=600&miles=44000&var2=Frank's%20Used%20Cars%20&var3=111111111
正如我所说,问题在于撇号。我已经尝试在PHP myadmin上将数据库中的“dealer”字段更改为“utf8_swedish_ci”,并在MySQL连接排序规则中将其从“latin1_swedish_ci”更改为该字段

显然,如果我去掉撇号,一切都很好,但我不能这样做。任何帮助都会很好

                            echo"<td>";
                echo$row->var1;
            echo"</td>";
            echo"<td>";
                echo$row->var2;
            echo"</td>";
            echo"<td>";
                echo$row->dealer;
            echo"</td>";
            echo"<td><a href='look.php?price=$row->price&miles=$row->miles&dealer=$row->dealer'>More Info</a>
echo”“;
echo$row->var1;
回声“;
回声“;
echo$row->var2;
回声“;
回声“;
echo$行->经销商;
回声“;
回声“
动态url链接:

echo"<td>";
                $url="look.php?make=".urlencode($row->make)."&model=".urlencode($row->model)."&colour=".urlencode($row->colour)."&Reg=".urlencode($row->Reg)."&miles=".urlencode($row->miles)."&price=".urlencode($row->price)."&region=".urlencode($row->region)."&miles=".urlencode($row->miles);
            echo"$urlHTML=htmlspecialchars($url)"; 
            echo "<a href=\"$urlHTML\">More Info</a>";
            echo"</td>";
echo”“;
$url=“look.php?make=“.urlencode($row->make)。”&model=“.urlencode($row->model)。”&color=“.urlencode($row->color)。“&Reg=“.urlencode($row->Reg)。”&miles=“.urlencode($row->miles)。”&price=“.urlencode($row->price)。“.urlencode($row->region)。”&miles=“.urlencode($row->miles);
echo“$URLTML=htmlspecialchars($url)”;
回声“;
回声“;
引用。它可以让你在构建url字符串后自动转义,这样问题就不会出现——或者其他很多人都喜欢它。

引用。它可以让你在构建url字符串后自动转义,这样问题就不会出现——或者其他很多人喜欢它。

尝试: $code=str\u replace(“'”、“\'”、$code);

试试:
$code=str\u replace(“'”,“\'”,$code);

首先,URL中有一些字符需要转义,因此使用它来构建URL

$url="look.php?price=".urlencode($row->price).
   "&miles=".urlencode($row->miles).
   "&dealer=".urlencode($row->dealer);
这将确保你的URL按预期工作。这将解决你的特定问题,但如果你想生成有效的HTML(为什么不呢!),你应该用

$urlHTML=htmlspecialchars($url);
回声“;

首先,URL中有一些字符需要转义,因此请使用来构建URL

$url="look.php?price=".urlencode($row->price).
   "&miles=".urlencode($row->miles).
   "&dealer=".urlencode($row->dealer);
这将确保你的URL按预期工作。这将解决你的特定问题,但如果你想生成有效的HTML(为什么不呢!),你应该用

$urlHTML=htmlspecialchars($url);
回声“;

提到了SQL注入,也提到了urlencode,但从您的问题中不清楚数据在哪一点被破坏

但解决方案,无论在哪里,都是一样的:

  • 总是在数据离开PHP时转义数据
  • 始终使用适当的方法根据数据的去向转义数据
  • 要将数据写入URL,请使用urlencode

    要将数据写入HTML,请使用htmlentities()

    要将数据写入XML,请使用()

    要将字符串数据写入7位电子邮件,请使用quoted_printable_encode()

    要将二进制数据写入电子邮件,请使电子邮件MIME和base64对数据进行编码或使用uuencode()

    要将数据写入MySQL查询字符串,请使用MySQL[i]\u real\u escape\u string()或参数绑定


    提到了SQL注入,也提到了urlencode,但从您的问题中不清楚数据是在什么时候被破坏的

    但解决方案,无论在哪里,都是一样的:

  • 总是在数据离开PHP时转义数据
  • 始终使用适当的方法根据数据的去向转义数据
  • 要将数据写入URL,请使用urlencode

    要将数据写入HTML,请使用htmlentities()

    要将数据写入XML,请使用()

    要将字符串数据写入7位电子邮件,请使用quoted_printable_encode()

    要将二进制数据写入电子邮件,请使电子邮件MIME和base64对数据进行编码或使用uuencode()

    要将数据写入MySQL查询字符串,请使用MySQL[i]\u real\u escape\u string()或参数绑定


    如果它转义了所有内容,那就没有多大帮助了——所有已经是现有URL编码一部分的百分号也会转义。什么百分号?他的输出中的百分号?因为转义函数实际上会为空格插入%20,这是正确编码URL所应该的。但作为证据,有些东西已经在这样做了d由于名称中已经存在
    %20
    ,这不是问题。
    '
    在URI的该部分是有效的。更可能的是,他在html中没有正确编码URL,在这种情况下是Htmlenties()如果它转义了所有内容,将不会非常有用——所有已经是现有URL编码一部分的百分比符号也将转义。什么百分比符号?他的输出中的符号?因为转义函数实际上会插入%20作为空格,这是正确编码URL所应该的。但是,作为evid,有些东西已经在这样做了由于名称中已经存在
    %20
    这一事实,这不是问题。
    '
    在URI的该部分是有效的。更可能的是,他在html中没有正确编码URL,在这种情况下,将使用htmlentities()停止。完全停止。继续阅读。然后搜索SO,了解如何防止它。问题“神奇地解决"! 此外,它还可以避免有人删除你的所有内容。这会使你面临SQL注入攻击。请了解如何使用参数化查询(最好是PDO模块)来保护您的web应用程序。有一些例子可以让你开始。停下来。停止句号。仔细阅读。那么搜索一下如何预防呢。问题“神奇地解决了”!此外,它还可以避免有人删除你的所有内容。这会使你面临SQL注入攻击。请了解如何使用参数化查询