如何在PHP中获取post变量?

时间:2014-05-05 10:35:13

标签: java php http-post

我正在编写一个带有参数的http post的java代码。该参数是一个转换为字符串的长变量。

ArrayList<NameValuePair> parameters =new ArrayList<NameValuePair>();
        parameters.add(new BasicNameValuePair("MAX_ID", String.valueOf(maxNewsId)));
        String result = CustomHttpClient.executeHttpPost(NewsUrl,parameters);

我希望在服务器上写一个php代码。该代码应获取该长数并连接到数据库并选择id大于该参数的行。 我写这段代码但没有工作。我该怎么办?

  <?php
 $db_host  = "localhost";
 $db_uid  = "**********";
 $db_pass = "**********";
 $db_name  = "**********"; 


 $db_con = mysql_connect($db_host,$db_uid,$db_pass,$db_name) or die('could not connect'); 
 mysql_select_db($db_name);
 $maxId = $_POST['MAX_ID'];
 mysql_query("set names utf8");
$sql = "SELECT * FROM News where Nid> ".mysql_real_escape_string($maxId);
$result = mysql_query($sql);

while($row=mysql_fetch_assoc($result))
{
    $output[]=$row;

}
print(json_encode($output));
 mysql_close();   

?>

2 个答案:

答案 0 :(得分:0)

如果你想要大于:你应该改变&#34;&lt;&#34; 以粗体显示

$sql = "SELECT * FROM News WHERE Nid < ".mysql_real_escape_string($maxId);

答案 1 :(得分:0)

关于您的代码的一些注意事项:

首先......请不要再使用mysql_query了。使用mysqli_query或PDO。在较新的PHP版本中,不推荐使用mysql_xxx,您应该使用替代方法。

第二......你的代码非常容易受到攻击。当您使用POST或GET变量时,应检查它是否包含有害代码。如果您的MAX_ID只能是一个数字我会建议如下(请注意intval - 部分):

$maxId = 0;
if (isset($_POST['MAX_ID'])) $maxId = intval($_POST['MAX_ID']);

它还会检查MAX_ID是否未设置(如果是这样,$ max_id为0),$ maxId只能产生一个数字。

最后......因为上面的$ maxId只能得到一个你不需要mysql_real_escape_string的数字。所以这就够了:

$sql = "SELECT * FROM News where Nid > ".$maxId;

(请注意manual of this function顶部关于不推荐使用mysql_xxx的警告。)