-1

I got trouble with this php coding when this file is launched, it just says You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 10' at line 1

Can you help me figure out what is wrong?

<?php
  $open=mysql_connect('localhost','ID','PW') or die(mysql_error());
  mysql_select_db('personal_info',$open);

  $tablename='writing';
  if($page=='') $page=1;
  $list_num=10;
  $page_num=10;
  $offest=$list_num*($page-1);

  $query="select * from $tablename";
  $result=mysql_query($query) or die(mysql_error());
  row=mysql_fetch_row($result);
  $total_no=$row[0];

  $total_page=ceil($total_no/$list_num);
  $cur_num=$total_no - $list_num*($page-1);

  $query="select*from $tablename order by number desc limit $offset, $list_num";
  $result=mysql_query($query) or die (mysql_error());
?>
4

3 回答 3

4
$offest=$list_num*($page-1);

您输入错误$offset,因此该值未定义。同样正如@user4035 提到的,在SELECT*FROM.

如果这些不能解决问题,请尝试echo $query;而不是运行查询,然后发布结果。

此外,将查询分成多行也是一种很好的做法。所以

$query="SELECT * FROM $tablename 
        ORDER BY number DESC 
        LIMIT $offset, $list_num"; 

它有助于提高可读性,并且在调试 mysql 错误时,mysql 将指向包含错误的行。

于 2013-06-01T23:16:28.540 回答
3

您的两个查询是:

select * from $tablename

select*from $tablename order by number desc limit $offset, $list_num

一种可能性是它number不是表中的字段。

不过,更有可能的是$offset. 你没有给它一个值,所以你的limit子句是limit ,xxx, 这是不允许的。

$offest另一方面,您确实为 设置了值。

$offest=$list_num*($page-1);

希望这应该教您打印出传递给数据库的实际查询。那么问题就很明显了。

于 2013-06-01T23:15:57.087 回答
0
<?php
    $open=mysql_connect('localhost','ID','PW') or die(mysql_error());
    mysql_select_db('personal_info',$open);

    $tablename='writing';
    if($page=='') $page=1;
    $list_num=10;
    $page_num=10;
    $offset=$list_num*($page-1);

    $query="SELECT * FROM $tablename";
    $result=mysql_query($query) or die(mysql_error());
    $row=mysql_fetch_row($result);
    $total_no=$row[0];

    $total_page=ceil($total_no/$list_num);
    $cur_num=$total_no - $list_num*($page-1);

    $query="SELECT * FROM $tablename ORDER BY number DESC LIMIT $offset, $list_num";
    $result=mysql_query($query) or die (mysql_error());
?>
于 2013-06-01T23:16:40.277 回答