我在这个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());
?>