在PHP中执行查询并直接向数据库中获取不同的结果

在PHP中执行查询并直接向数据库中获取不同的结果,php,mysql,Php,Mysql,使用phpMyAdmin并运行以下查询,我得到19个寄存器: SELECT * FROM trayecto tr, lugar lu WHERE idAeropuerto = '3' AND tr.idLugar = lu.idLugar GROUP BY tr.idAeropuerto, tr.idLugar ORDER BY lu.nombre 但是在获取数据抛出和PHP调用的网站上运行这个查询,我只得到18个寄存器(除了最后一个输入到数据库中的寄存器外,所有寄存器都是) LUGAR id

使用phpMyAdmin并运行以下查询,我得到19个寄存器:

SELECT * FROM trayecto tr, lugar lu WHERE idAeropuerto = '3' AND tr.idLugar = lu.idLugar GROUP BY tr.idAeropuerto, tr.idLugar ORDER BY lu.nombre
但是在获取数据抛出和PHP调用的网站上运行这个查询,我只得到18个寄存器(除了最后一个输入到数据库中的寄存器外,所有寄存器都是)

LUGAR

idLugar - int(8) - auto_increment
nombre - varchar(40)

知道为什么我使用相同的like查询得到不同的结果吗?

在PHP脚本中,虽然您将表定义为int(8),但您将数字3作为字符串(带引号)进行查询

str(3)与int(3)不同

除此之外:请在网上阅读有关SQL注入的内容。
将$\u GET['q']直接传递到数据库服务器不是很聪明

您正在连接到两个不同的数据库。如果您需要有关连接到正确数据库的帮助,请与您的web提供商联系。

您正在查询相同的数据库吗?同一查询在两个不同环境中给出两个不同结果的最常见原因是您连接到两个不同的数据库。坏了link@Mark我只有一个数据库。很抱歉,网站暂时关闭了(这是我的主机提供商所说的)。@Manel:当你有两个数据库时,认为你只有一个数据库是一个很常见的错误。如果您使用的是您不熟悉的新web提供商,则会发生这种情况。若要查看是否存在这种情况,请尝试通过phpMyAdmin修改其中一个显示的字符串,并检查更改是否在网页中可见。如果更改不可见,则您可能正在访问两个不同的数据库。@MarkByers我更改了组合中出现的一个名称,但没有看到新值,但我只有一个数据库,它似乎正在访问它。我会联系主机服务提供商,检查一切是否正常。我将PHP文件简化到最低限度。在完整版本中,我在查询中使用变量之前检查参数的类型和大小。但是,谢谢你的建议。但这是你的问题:
idAeropuerto='3'
当你的数据库设置为使用int(8)时,“3”不是3,对它们进行分组可以得到不同的结果。我认为这不是问题所在。使用
WHERE-idAeropuerto='3'
也应该可以。
$q=$_GET["q"];
include('init_bd.php');
$selectLugaresDeAeropuerto="SELECT * FROM trayecto tr, lugar lu WHERE idAeropuerto = '".$q."' AND tr.idLugar = lu.idLugar GROUP BY tr.idAeropuerto, tr.idLugar ORDER BY lu.nombre";
$resultLugaresDeAeropuerto = mysql_query($selectLugaresDeAeropuerto) or die('Consulta fallida: ' . mysql_error());
echo "<SELECT SIZE='1' NAME='Lugar'>";
while($row = mysql_fetch_array($resultLugaresDeAeropuerto))
{
  printf("<OPTION VALUE=%s>%s</OPTION>", $row["idLugar"], $row["nombre"]);    
}
echo " </SELECT>";
mysql_free_result($resultLugaresDeAeropuerto);
include('close_bd.php');
idLugar - int(8) - auto_increment
nombre - varchar(40)