将php变量放入mysql查询
如果您不想得到我要做的事情的完整摘要,请跳到(问题从这里开始) 我正在建立我的新网站,遇到了一个问题 我基本上是想把广告分配到特定的国家。例如,如果您来自英国,您将看到我们在英国库存中的广告 因此,我从谷歌收集了一些数据,关于如何根据用户的IP检测用户所在国家。 我已经做了一个函数,这个函数做得很好将php变量放入mysql查询,php,mysql,Php,Mysql,如果您不想得到我要做的事情的完整摘要,请跳到(问题从这里开始) 我正在建立我的新网站,遇到了一个问题 我基本上是想把广告分配到特定的国家。例如,如果您来自英国,您将看到我们在英国库存中的广告 因此,我从谷歌收集了一些数据,关于如何根据用户的IP检测用户所在国家。 我已经做了一个函数,这个函数做得很好 $ip_address= $_SERVER['REMOTE_ADDR']; function ip_location($ip){ $parts = explode('.', $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您的国家名称后有一个空格。那是打字错误吗?这个网站有一个很好的介绍。这个网站有一个很好的介绍。你因为没有给出一个例子而赢得了否决票。这是适当的。我只是对一个特定的问题给出了一个具体的答案。虽然这在技术上是正确的,但像这样的答案会助长极其危险的习惯。如果你举了一个没有这样的例子,你会赢得否决票。这是适当的。我只是对一个特定的问题给出了一个具体的答案。虽然这在技术上是正确的,但像这样的答案会助长极其危险的习惯。错。你举了一个例子,但没有给出答案,所以你赢得了否决票。错了。你举了一个例子,但没有给出答案,所以你赢得了反对票。你举了一个例子,但没有给出答案,所以你赢得了反对票。你在没有投票的情况下举了一个例子,赢得了否决票。