让我尽我所能地解释一下。
我有一个名为funcs.php的PHP文件,其中正是这个PHP代码:
$q = $_GET["q"];
$sql = "SELECT * FROM bl_zrify WHERE Name = '".$q."'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
if ($row['State'] == '') {
$SchoolState = 'Unknown';
}
else if ($row['State'] == 'AL') {
$SchoolState = 'Alabama';
}
else if ($row['State'] == 'AK') {
$SchoolState = 'Alaska';
}
else if ($row['State'] == 'AZ') {
$SchoolState = 'Arizona';
}
else if ($row['State'] == 'AR') {
$SchoolState = 'Arkansas';
}
print 'This school is in';
print $SchoolState;
}
当我在浏览器中打电话时:
url example => http://www.domain.com/funcs.php?q=ABRAHAM BALDWIN农业学院
它通常有效,返回=>这所学校在阿拉巴马州
但是当我在浏览器中调用任何内部有&
(&)的网址时,根本无法使用:
url example => http://www.domain.com/funcs.php?q=BRYANT&斯特拉顿商学院 - 水牛城
我不知道为什么,但是对于某些原因,当URL中有amp(&)时我没有得到任何结果,请帮助!
答案 0 :(得分:3)
funcs.php?q=BRYANT & STRATTON BUSINESS INSTITUTE - BUFFALO
您正在传递两个变量。做一个var_dump($_GET);
你会看到。
你可能意味着:
funcs.php?q=BRYANT+%26+STRATTON+BUSINESS+INSTITUTE+-+BUFFALO
要传递URL中参数的值,它们需要正确的编码。也称为url-encoding。 &
是一个特殊字符,需要写为%26
,空格也是一个特殊字符,可以写成+
或%2b
。也称为百分比或三重编码。
PHP中的一个函数是:urlencode
Docs。
在任何情况下,您都需要正确编码SQL查询的搜索词,否则您允许其他人更改SQL查询并执行搜索超出您想要的内容甚至删除数据库。这比丢失一半变量值更严重。
答案 1 :(得分:1)
'&安培;'分隔URL参数。您的第二个查询的参数q
等于“BRYANT”,参数STRATTON BUSINESS…
没有值。