Php MySQL受URL限制

Php MySQL受URL限制,php,mysql,Php,Mysql,我写了以下内容,以限制我的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 Funct

我写了以下内容,以限制我的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');

您可能正在使用以下内容:

while($row = mysql_fetch_array()) {

}
但是,您应该使用:

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

}
您没有提供此处使用的代码,因此我只是猜测。

更改此项:

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

$result = mysql_query("SELECT * FROM test1 WHERE 1" . $limitsql);
另外,您确实不应该将
$\u GET
的输入直接放入SQL

试试这个

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

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

$result = mysql_query("SELECT * FROM (Table Name) WHERE 1" . $limitsql);
但是,这段代码还需要注意一些其他事项。首先,如注释中所述,mysql_*函数已被弃用,理想情况下,您应该改为另一个库,如mysqli或PDO

此外,此代码非常容易受到sql注入攻击,在将输入放入sql查询之前,应该对其进行清理

此外,您没有检查调用
mysql\u query
的输出。您看到的错误是因为当查询失败时,函数返回
false

使用以下方法:

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

这是什么?(表名)使用您的实际表名进行更改,并请停止使用不推荐使用的函数,如
mysql.*
,了解pdo或mysqli。您的代码也容易受到mysql注入的攻击打印您在mysql\u查询中运行的最终SQL。您的解决方案可以提供一些sql注入,因此请注意此处不需要1的地方(这不是错误)。一旦代码正常工作,我将对sql注入进行排序,因为我将在需要的地方使用sql escape命令。@user2452069,你有一个有趣的雇主:DWHERE 1在这里不需要:)这非常有效,谢谢你在你的答案中添加一个intval,这样他就不会因为$limitsql='limit 0',而担心sql注入了;在第二行