将php变量放入mysql查询

将php变量放入mysql查询,php,mysql,Php,Mysql,如果您不想得到我要做的事情的完整摘要,请跳到(问题从这里开始) 我正在建立我的新网站,遇到了一个问题 我基本上是想把广告分配到特定的国家。例如,如果您来自英国,您将看到我们在英国库存中的广告 因此,我从谷歌收集了一些数据,关于如何根据用户的IP检测用户所在国家。 我已经做了一个函数,这个函数做得很好 $ip_address= $_SERVER['REMOTE_ADDR']; function ip_location($ip){ $parts = explode('.', $ip);

如果您不想得到我要做的事情的完整摘要,请跳到(问题从这里开始)

我正在建立我的新网站,遇到了一个问题

我基本上是想把广告分配到特定的国家。例如,如果您来自英国,您将看到我们在英国库存中的广告

因此,我从谷歌收集了一些数据,关于如何根据用户的IP检测用户所在国家。 我已经做了一个函数,这个函数做得很好

$ip_address= $_SERVER['REMOTE_ADDR'];

function ip_location($ip){
    $parts = explode('.', $ip);
    $numeric_ip = $parts[3] + (256 * $parts[2]) + (256 * 256 * $parts[1]) + (256 * 256 * 256 * $parts[0]);

    $sql = "SELECT country FROM iptocountry WHERE lower_bound <= $numeric_ip AND upper_bound >= $numeric_ip LIMIT 1";
    $result = mysql_query($sql);
    $country = mysql_result($result, 0);
    return $country;
}

$country = ip_location($ip_address);
echo $country; // Always echos the correct country
使用
country='unitedkingdom'
效果很好,但当我使用
country='$country'

什么都不起作用——它从不显示广告

当我将PHP变量放在查询中时,有人能帮助我理解为什么这个查询不起作用吗。这实际上是第一次这么简单的事情让我如此困扰

任何帮助都将不胜感激

$sql= "SELECT *  FROM nuevo__htmlad WHERE country='$country' AND active=1 ORDER BY RAND() LIMIT 1";
或者这个也试试这个

$sql= "SELECT *  FROM nuevo__htmlad WHERE country='$country' AND active=1 LIMIT 1 ORDER BY RAND()";
或者这个也试试这个

$sql= "SELECT *  FROM nuevo__htmlad WHERE country='$country' AND active=1 LIMIT 1 ORDER BY RAND()";
试试这个: 我总是用这种风格,因为国家是一根弦

$sql= "SELECT *  FROM nuevo__htmlad WHERE country='".$country."' AND active=1 ORDER BY RAND() LIMIT 1";
试试这个: 我总是用这种风格,因为国家是一根弦

$sql= "SELECT *  FROM nuevo__htmlad WHERE country='".$country."' AND active=1 ORDER BY RAND() LIMIT 1";

我通过使用PDO驱动程序处理数据库来避免这种情况。这使我能够使用参数,并使重用sql语句变得容易。查看更多信息。

我通过使用PDO驱动程序处理数据库来避免这种情况。这使我能够使用参数,并使重用sql语句变得容易。查看以了解更多信息。

在评论中询问了一些问题后,发现
$country
变量包含了额外的空格

OP使用
substr\u replace($country,,-1)
修复了它。我会个性化地选择
trim()


在评论中问了几个问题后,发现
$country
变量包含了额外的空格

OP使用
substr\u replace($country,,-1)
修复了它。我会个性化地选择
trim()


这里提供的答案中的所有代码都包含SQL注入漏洞。您必须转义用户输入


此处提供的答案中的所有代码都包含SQL注入漏洞。您必须转义用户输入



首先打印查询
echo$sql
并向我们展示结果。@MathieuImbert说了什么,但为了澄清,请向我们展示
echo$sql
在硬编码国家和变量use中显示了什么。echo$sql;给出此结果从
nuevo_uuhtmlad
中选择*其中
国家
=“英国”和
活动
=1按兰德排序()限制1您的国家名称后有一个空格。那是打字错误吗?首先打印查询
echo$sql
并向我们展示结果。@MathieuImbert说了什么,但为了澄清,请向我们展示
echo$sql
在硬编码国家和变量use中显示了什么。echo$sql;给出此结果从
nuevo_uuhtmlad
中选择*其中
国家
=“英国”和
活动
=1按兰德排序()限制1您的国家名称后有一个空格。那是打字错误吗?这个网站有一个很好的介绍。这个网站有一个很好的介绍。你因为没有给出一个例子而赢得了否决票。这是适当的。我只是对一个特定的问题给出了一个具体的答案。虽然这在技术上是正确的,但像这样的答案会助长极其危险的习惯。如果你举了一个没有这样的例子,你会赢得否决票。这是适当的。我只是对一个特定的问题给出了一个具体的答案。虽然这在技术上是正确的,但像这样的答案会助长极其危险的习惯。错。你举了一个例子,但没有给出答案,所以你赢得了否决票。错了。你举了一个例子,但没有给出答案,所以你赢得了反对票。你举了一个例子,但没有给出答案,所以你赢得了反对票。你在没有投票的情况下举了一个例子,赢得了否决票。