我正在编写一个带有参数的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();
?>
答案 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的警告。)