2011-05-11 70 views
0

谁能告诉我什么是错用下面的代码---PHP/MySQL查询问题

for($i=0; $i<count($strnamearray); $i++){ 
echo $strnamearray[$i]."<br />"; 

$cordcquery = "SELECT `lat` , `lng` FROM `traffic` WHERE `strname` = '{$strnamearray[$i]}' LIMIT 0 , 30;"; 
$cordresult = mysql_query($cordcquery); 

if (!$cordresult) 
{ 
    die('Invalid strncquery: ' . mysql_error()); 
} 

while($cordrow = @mysql_fetch_assoc($cordresult)){ 
    echo $cordrow['lng'].",".$cordrow['lat']; 
    echo "<br />"; 
} 
} 

这里$ strnamearray [$ i]为其中包含了一些名称的数组。执行此PHP代码后没有显示错误。但问题是我没有得到我想要的输出...

+1

好吧,这很有帮助。桌子上有什么?阵列中有什么?你得到的输出是什么?为什么你在2011年使用mysql而不是mysqli或PDO并准备好了语句?你是否非常渴望得到SQL注入攻击? – chx 2011-05-11 23:47:53

+0

@chx:在'mysql'上使用'mysqli'没有什么严格的优势,只是界面的改变。并不是所有的代码都是OOP,也不应该总是这样。 – Orbling 2011-05-14 17:20:11

+0

首先,“$ cordcquery”显示什么?你可以手动运行吗?当我处理SQL时,我总是检查输出的查询可以在命令行或查询窗口中输入并运行。其次,这可能没有任何结果,但在函数前面使用“@”可以抑制错误消息。 – mardala 2011-05-18 22:50:31

回答

0

这是在黑暗中拍摄的一些信息,但有两件事。

  1. echo $cordcquery只是为了确保sql看起来是正确的,你可以直接在MYSQL中执行它。从我可以告诉它应该,但不知道变量我什么都不知道。

  2. 而不是LIMIT 0, 30只使用LIMIT 30。应该是同样的事情,但我已经看到了一些funkiness取决于你使用的是什么版本的PHP和MySQL与传递LIMIT 偏移量,行数。从我能记得的情况来看,它将采用偏移量,而不是分析行数,因此不会返回任何信息。

让我知道这是否有帮助。