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

时间:2012-03-12 11:35:06

标签: 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

但在网站上运行此查询获取数据throw和PHP调用我只获得18个寄存器(所有这些寄存器,但最后一个在数据库中输入)。

$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');

您可以执行此PHP以查看结果: http://www.transferbus.com/bd/getLugar.php?q=3

我有一个MySQL数据库,其中包含以下表格和结构:

TRAYECTO

idAeropuerto - int(8)
idLugar - int(8)
idTipoTransporte - int(8)
precio - double
tiempo - varchar(5)
distancia - varchar(5)

LUGAR

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

知道为什么我会在同样的查询中获得不同的结果吗?

2 个答案:

答案 0 :(得分:0)

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

str(3)与int(3)

不同

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

答案 1 :(得分:0)

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