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
这里的问题可能与数据库查询无关,更多的是如何将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().
| 归档时间: |
|
| 查看次数: |
2822 次 |
| 最近记录: |