如何将字符"&"插入MySQL数据库?

Vik*_*löf 0 php mysql insert special-characters

我想我之前已经看过这个问题,但我认为它的回答还不够好,因为我无法让它发挥作用.

案例:
我想在我的MySQL数据库中插入一个URL,如下所示:

$url = $_POST["url"]; //$_POST["url"] = "http://example.com/?foo=1&bar=2& ...";

$sql = mysql_query("INSERT INTO table(url) values('$url')") or die ("Error: " . mysql_error());
Run Code Online (Sandbox Code Playgroud)

现在,URL正确地插入到数据库中,但是当我查看它时,它看起来像这样:

http://example.com/?foo=1
Run Code Online (Sandbox Code Playgroud)

就像URL在"&"字符处被剪切一样.我已经尝试过mysql_real_escape_string,htmlspecialchars通过做"\"等等逃避.似乎没有什么工作.

我已经读过你可以用"SQL Plus"或类似的东西来做.

提前致谢.

此致,VG

Dav*_*dom 5

这里的问题可能与数据库查询无关,更多的是如何将url传递给页面.我怀疑你会发现用于加载页面的URL是这样的:

http://mydomain.com/?url=http://example.com/?foo=1&bar=2
Run Code Online (Sandbox Code Playgroud)

这将导致$_GET如下所示:

array (
  'url' => 'http://example.com/?foo=1',
  'bar' => '2'
)
Run Code Online (Sandbox Code Playgroud)

您需要的是使用看起来更像这样的URL来调用页面:

http://mydomain.com/?url=http://example.com/?foo=1%26bar=2
Run Code Online (Sandbox Code Playgroud)

请注意,&已编码为%26.现在 $_GET看起来像这样:

array (
  'url' => 'http://example.com/?foo=1&bar=2'
)
Run Code Online (Sandbox Code Playgroud)

...并且查询将按预期工作.

编辑我刚刚注意到你正在使用$_POST,但同样的规则适用于请求的主体,我仍然认为这是你的问题.如果你是,我怀疑,使用Javascript/AJAX来调用页面,你需要传递URL字符串encodeURIComponent().