MySQL的URL限制

时间:2013-06-04 14:03:31

标签: php mysql

我已经编写了以下内容,以便在我的网址中将我的表格输出限制为?limit = 10但是它给了我:

 ( ! ) SCREAM: Error suppression ignored for
 ( ! ) Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in     C:\wamp\www\sql_table.php on line 44
Call Stack
#   Time    Memory  Function    Location
1   0.0005  250584  {main}( )   ..\sql_table.php:0
2   0.0020  258904  mysql_fetch_array ( )   ..\sql_table.php:44

我的代码如下:

    if ($_GET['limit']) {
$limitsql = ' limit 0, ' . $_GET['limit'];
} else
$limitsql = '';

// This chooses which results i want to select from
$result = mysql_query("SELECT * FROM test1 WHERE 1" . '$limitsql');

5 个答案:

答案 0 :(得分:3)

这里的主要问题是您不需要引号$limitsql,因此请将其更改为

$result = mysql_query("SELECT * FROM (Table Name) WHERE 1" . $limitsql);

但是,此代码还需要注意其他一些事项。首先,如注释中所述,不推荐使用mysql_ *函数,理想情况下应该更改为另一个库,例如mysqli或PDO。

此外,此代码非常容易受到SQL注入攻击,并且在放入SQL查询之前应对输入进行清理。

此外,您不会检查致电mysql_query的输出。您看到的错误是因为查询失败时函数返回false

答案 1 :(得分:0)

你可能正在使用它:

while($row = mysql_fetch_array()) {

}

但是,你应该使用:

while($row = mysql_fetch_array($result)) {

}

你没有提供你在这里使用的代码,所以我只是在猜测。

答案 2 :(得分:0)

改变这个:

$result = mysql_query("SELECT * FROM test1 WHERE 1" . '$limitsql');

To This:

$result = mysql_query("SELECT * FROM test1 WHERE 1" . $limitsql);

另外,你真的不应该将$_GET的输入直接输入SQL。

答案 3 :(得分:0)

试试这个

if($_GET['limit'])
{
$limitsql = $_GET['limit'];
$result = mysql_query("SELECT * FROM table_name LIMIT 0, $limitsql");
}

答案 4 :(得分:0)

使用此:

if($_GET['limit']){
    if (is_numeric($_GET['limit'])) {
        $limitsql = ' limit 0, ' . $_GET['limit'];
    }
    }else{
$limitsql = '';
}
$result = mysql_query("SELECT * FROM test1 WHERE 1" . $limitsql);