2017-03-31 75 views
1

这是我使用PHP脚本里面这我当前的代码。

$prodid = $_GET['id']; 
$query = mysql_query("SELECT * FROM table1 WHERE productid = '$prodid' 
ORDER by amount DESC LIMIT 3"); 

我设置的上限为3。但是,我想定义的东西,如“$计数”和$计值应该从MySQL查询即

$count = mysql_query("SELECT count FROM table1 WHERE productid = '$prodid'"); 

极限中获取必须改变'$ prodid'。像这样,

mysql_query("SELECT * FROM table1 WHERE productid = '$prodid' 
ORDER by amount DESC LIMIT '$count'"); 
+1

是不是总是要的记录,其中的productid = X是多少?如果count等于10,然后您执行相同的查询限制10,为什么要使用它?如果你指定了限制,它将会是10条记录。 – mkaatman

+2

首先,您正在使用mysql_ - 一个不推荐的,不安全的数据库处理程序。使用mysqli_或PDO。其次,您直接从URL获取用户定义的变量,并将其放入查询中。使用mysql_query。你想要你的数据库被删除?让我和说明:https://imgs.xkcd.com/comics/exploits_of_a_mom.png – junkfoodjunkie

+1

'LIMIT“$ count'' =>'LIMIT $ count'。并确保它是一个整数。 – Qirel

回答

1

有几件事。

第一个,您正在使用此查询来查找要提取的行数。

"SELECT count FROM table1 WHERE productid = '$prodid'" 

应该说

"SELECT COUNT(*) FROM table1 WHERE productid = '$prodid'" 

为了得到行数。

而且,它应该说

"SELECT COUNT(*) FROM table1 WHERE productid = " . intval($prodid) 

避免SQL注入(假设你的prodid值是整数)。

,上述查询还给1列的结果集。你需要真正阅读那一行。我不会告诉你怎么做,用mysql_因为只有傻瓜使用mysql_这些天。请使用PDOmysqli_

,这个查询

"SELECT * FROM table1 WHERE productid = " . intval($prodid) . " ORDER by amount DESC" 

总是返回行以前的查询想要的数量。因此,在你给出的例子中,你的LIMIT子句是完全不必要的。

+0

好!如果count是table1中的列名,并且每个productid都有不同的计数值,例如对于productid = 1,计数为3,对于prodcutid = 2,计数为6,如果$为$,我想获取3个结果PRODID = 1,同样,如果6个结果$ PRODID = 2 如何可以查询? – vijay9066