- UID
- 1
- 阅读权限
- 255
- 注册时间
- 2006-7-24
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
$ O2 T; R% P0 D$ B% ~; V2 l
byLht_CV2.0_0103
! V( ~) {9 P; C. ~" k( u! U" B2 {PHPUP info: MySQL Query Error
3 s# g* v" u5 I; {/ r9 n$ b- TTime: 2011-1-22 2:18pm" s) v" m! h1 P# E+ k7 `% t5 Q: p4 ^
Script:
. F# d r; e: D0 m, O* qSQL: select * from `tuan369`.`tuan369_object` where 1 and type = ‘spike’ and 1295677090 > starttime and 1295677090 < endtime order by localtion limit
" v2 G$ H B2 |$ n. Y8 u1 }Error: 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 ” at line 1
% b7 F$ B; U4 @( X. t- }& \( x: t5 o- `Errno.: 1064 9 \. w- p& M' k% B
以上错误在没有关闭phperror的时候,你访问首页会在偶然的时间产生(这个时间时候缓存时间限制的)。
' }, x$ W/ \6 v/ ]: [很显然这是一个语法错误mysql的语法在limit后面没有增加限制数量。
# Q9 D/ s; r6 d3 o问题出现的页面时在 inc/common.inc.php 中+ J6 Z; n7 ]; T. o
通过检查这个文件我们可以看到这样的代码
|$ \+ @" A3 F5 R" q3 Y2 Uif(!checkfile(“object_side”,1800)) //检查缓存文件的时间是不是超过了1800秒. G) U% y0 t7 v+ s$ z+ R
{ //如果超过
) t2 h' P% Q: o% b5 m, { $time = time();
- V% |6 J: \' k $query=$db->query(“select * from “.tname(‘object’).” where 1 and type = ‘spike’ and $time > starttime and $time < endtime order by localtion limit “.$GLOBALS['setting']['object_sidenum']); //问题就出在这一句,很显然这里的$GLOBALS['setting']['object_sidenum']没有设置 后台有设置的地方。但是没有设置的时候这里就会出错。我现在没有搞懂如何将变量放进globals里面去的。这里不管他2 ~4 N2 a# r7 b& k
4 R, I- O( R5 a$ b
while($rows=$db->fetch_array($query))
0 @* O |1 Y+ R2 {# z4 f9 Y) P: { {2 x+ Z* W# a( E
$object_side[]=$rows;
/ D/ g9 o U8 {+ } }: U2 `# ]! r4 c; h5 L
1 P: B( b( Z: L5 J0 p
write(‘object_side’,$object_side);//缓存超时的时候写入缓存; u" h7 p$ v$ G! k
}) d" S) E4 }! J8 }
else //没有超时则 读取缓存文件。
( C% a9 r: X" d6 z{/ w- b7 i6 _# h' U/ h
$object_side=read(“object_side”);
5 b& D1 Y: `5 T7 z2 M8 b* Y} : d- |8 z/ W; T$ r% H4 M# k b3 u7 A
这里很简单我的说明语句也已经指出了问题的所在。
9 R: j' c) `8 c- d/ r( D; k' S Z* c关键就在与$GLOBALS['setting']['object_sidenum']这个变量
; p+ M. ~* N$ o8 q0 \$ b而在index.php1 W7 w5 C7 S ]' }' ~; O
<?php
3 I Y6 W# w% [ A7 V- m% x' R0 l( _session_start();
4 f: ~8 F/ |5 e4 S L. mset_time_limit(1000);
! \' A7 C h9 o4 O7 _! m: Rif(!is_file(str_replace(“\\”,’/',dirname(__FILE__)).’/data/config.inc.php’))
# V0 \& Y. w P1 S/ h{0 r4 X$ O$ T5 d$ W
echo ‘<SCRIPT LANGUAGE=”JavaScript”>
4 {- [5 _, M. G7 u <!–
3 _& u' `! W, J% Q% M% V( b) _& t window.location=”install/index.php”;
0 B" q! P" N- w% t Y! }9 m //–>, ?$ X! X5 j- k- Z* r6 _) P/ y. Y0 k
</SCRIPT>’;
8 j5 V- Q$ E: ~8 Q) W. | exit;
' _, h2 R2 u! Z4 @+ f) _, A}7 D: J3 u/ T: F7 n+ T3 }
require(‘inc/common.inc.php’);
6 d& a! D% {: _# B: ~" V//……………………省略代码 & ^& b d$ N% ]: u6 _; p$ A2 F
在引入common.inc.php文件之前没有看到有关导入globals的信息。所以我不能够确定他正确的被导入了。这里不讨论这个导入问题。
! _2 N1 N9 y2 o# G: o! O在不设置相应变量的时候解决办法是增加 红色代码! u3 ?" O" q5 F0 e: ?
if(!checkfile(“object_side”,1800))
" O# B* I. k! w( S( o3 w{
2 U1 b9 c9 r) _ if(!$GLOBALS['setting']['object_sidenum'])$GLOBALS['setting']['object_sidenum']=10;% j9 C% \( R8 s" K: b- T+ H
$time = time();
8 A) b. H! J) ~" [ $query=$db->query(“select * from “.tname(‘object’).” where 1 and type = ‘spike’ and $time > starttime and $time < endtime order by localtion limit “.$GLOBALS['setting']['object_sidenum']);
8 ^( g/ [7 n& s# |7 [
4 Q2 g8 p7 s5 `; j6 h while($rows=$db->fetch_array($query))8 g8 I) Z( e9 G) @: E
{1 e4 q3 d2 ~6 @" u
$object_side[]=$rows;
3 I- z4 D% F% f8 E) I }
! y7 C9 z+ ]5 B' t# U0 B! o+ D( E & _; }3 @$ U Z* ~
write(‘object_side’,$object_side);& o' C; E7 \$ L+ N) [8 D
}
O3 a( w, w) a: C* Selse
3 i& G% h7 t" @5 E' s6 p. {{; M' c/ D2 {3 f# c+ L$ ?
$object_side=read(“object_side”);
% d. F( m, W5 g- n: R' u}
+ g* I8 _4 G2 ^, s7 m3 L# G给该变量定义一个值。 |
|