-4

我编写了以下内容,以通过我的 URL 中的 ?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');
4

5 回答 5

3

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

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

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

此外,这段代码很容易受到 sql 注入攻击,在放入 SQL 查询之前应该对输入进行清理。

此外,您没有检查对mysql_query. 您看到的错误是因为该函数false在查询失败时返回。

于 2013-06-04T14:10:03.840 回答
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);
于 2013-06-04T14:14:41.980 回答
0

你可能正在使用这个:

while($row = mysql_fetch_array()) {

}

但是,您应该使用:

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

}

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

于 2013-06-04T14:08:50.713 回答
0

改变这个:

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

对此:

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

此外,您真的不应该将输入$_GET直接放入 SQL 中。

于 2013-06-04T14:08:59.843 回答
0

尝试这个

if($_GET['limit'])
{
$limitsql = $_GET['limit'];
$result = mysql_query("SELECT * FROM table_name LIMIT 0, $limitsql");
}
于 2013-06-04T14:09:04.637 回答