php错误:您的SQL语法有错误


php error:You have an error in your SQL syntax

我在这个php编码中遇到了麻烦当这个文件启动时,它只是说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

你能帮我弄清楚是怎么回事吗?

<?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());
?>
$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将指向包含错误的行。

您的两个查询是:

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);

希望这能教会您打印传递给数据库的实际查询。那么问题就显而易见了。

<?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());
?>