Php 在SELECT SQL中使用LIMIT WHERE once

Php 在SELECT SQL中使用LIMIT WHERE once,php,mysql,sql,Php,Mysql,Sql,可能重复: 我在SELECT SQL中遇到了问题,因为我包含了LIMIT,所以我的代码如下所示: $id = $_GET['id']; $sql = "UPDATE rl_threads SET views = views + 1 WHERE id = '$id'"; $sql = mysql_query($sql); //Pager $ile = 10; if(isset($_GET['page'])) { $strona = $_GET['page']; } else {

可能重复:

我在SELECT SQL中遇到了问题,因为我包含了LIMIT,所以我的代码如下所示:

$id = $_GET['id'];

$sql = "UPDATE rl_threads SET views = views + 1 WHERE id = '$id'";

$sql = mysql_query($sql);

//Pager

$ile = 10;

if(isset($_GET['page']))
{
  $strona = $_GET['page'];
}
else
{
  $strona = 1;
}

$strona = $strona - 1;

$offset = $strona * $ile;

//Koniec Pagera

$sql = "SELECT * FROM rl_posts LIMIT $od, 10 WHERE thread_id = '$id'";

$sql = mysql_query($sql);
$sql = "SELECT * FROM rl_posts WHERE thread_id = '$id' LIMIT $od, 10";
在我没有添加限制之前,它工作正常,但在脚本说:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/radiolev/public_html/forum.php on line 194
Partnerzy

有人能帮我解决这个问题吗?

正确的
SELECT
语法在
WHERE
子句后面有
LIMIT
,如下所示:

$id = $_GET['id'];

$sql = "UPDATE rl_threads SET views = views + 1 WHERE id = '$id'";

$sql = mysql_query($sql);

//Pager

$ile = 10;

if(isset($_GET['page']))
{
  $strona = $_GET['page'];
}
else
{
  $strona = 1;
}

$strona = $strona - 1;

$offset = $strona * $ile;

//Koniec Pagera

$sql = "SELECT * FROM rl_posts LIMIT $od, 10 WHERE thread_id = '$id'";

$sql = mysql_query($sql);
$sql = "SELECT * FROM rl_posts WHERE thread_id = '$id' LIMIT $od, 10";
您收到的错误,
警告:mysql\u fetch\u array():提供的参数不是有效的mysql结果资源
。。。是在MySQL查询失败时产生的。假设您在某个地方定义了
$od
(如果未定义,您将看到相同的警告),则更新到上述内容应该可以解决此问题

旁注,非具体答案:

我建议升级到或扩展。这两种方法都支持预先准备好的语句,使您的查询更易于阅读/管理,还可以提供额外的安全性来抵御SQL注入攻击。

我在您的代码中没有看到mysql\u fetch\u array(),我猜是在$SQL=mysql\u query($SQL)之后。可能查询失败了(并且$sql为FALSE),将“LIMIT$od,10”放在clauseit在LIMIT之前工作的位置之后,如果我从代码中删除LIMIT,它就工作了,所以这不是一个问题。这个$od是什么?它是如何定义的?如果你读了我的评论,我说在WHERE之后使用LIMIT<代码>其中线程\u id=$id LIMIT$od,10。并对您的输入进行消毒。
SELECT * FROM rl_posts WHERE thread_id = '$id' LIMIT $od, 10