我已经编写了以下内容,以便在我的网址中将我的表格输出限制为?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');
答案 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);