2014-02-09 96 views
0

我在phalcon上做了一些社交活动页面,但在获取提要时存在一个奇怪的问题。即时通讯在phalcon上做原始查询,但是当我手动编写代码的工作,但是当设置/从jquery到PHP它不是。Phalcon原始查询

手动代码(它的工作):

$sql = "SELECT S.*,S.user_one as user_id,S.id,U.username,U.profile_photo 
FROM users U, social S 
WHERE 
CASE 

WHEN `user_one` = $user_id 
THEN `user_two` = `user_id` 
WHEN `user_two` = $user_id 
THEN `user_one`= `user_id` 
END 


AND 
(`user_one` = $user_id OR `user_two` =$user_id) Group by S.id ORDER BY S.id DESC LIMIT 20 OFFSET 0"; 

// Base model 
$social = new Social(); 



    // Execute the query 
    return new Resultset(null, $social, $social->getReadConnection()->query($sql)); 

但相同的查询相同的代码,但只有从jQuery的获得(其crypting)

public static function runAjaxQuery($sql) 
    { 


     // Base model 
     $social = new Social(); 



     // Execute the query 
     return new Resultset(null, $social, $social->getReadConnection()->query($sql)); 

     } 

关于第二个我得到这个错误:SELECT * S. ,S.user_one如USER_ID,S.id,U.username,U.profile_photo FROM用户U,社会小号 WHERE CASE WHEN user_one = 6 THEN user_two = user_id WHEN user_two = 6 THEN user_one = user_id END AND (user_one = 6 OR user_two = 6)组由S.id ORDER BY S.id DESC LIMIT 20 OFFSET 20SQLSTATE [42000]:语法错误或访问冲突:1064你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以找到正确的语法,以便在第1行'SELECT S。*,S.user_one as user_id,S.id,U.username,U.profile_photo FROM users U'

感谢所有

+0

将您的查询复制并直接粘贴到phpmyadmin或mysql中(替换变量)并查看它是否在那里运行。这似乎是一个语法错误比Phalcon错误。 –

+0

user_two在哪里定义? –

+0

@NikolaosDimopoulos其在phpmyadmin上的工作。 ,user_two没有选择列,只有在哪列 –

回答

0

看看从MySQL错误信息:

检查对应于你的MySQL服务器版本使用近““SELECT * S.正确的语法手册,S.user_one as user_id,S.id,U.username,U.profile_photo FROM users U''at line 1

请注意,您在SELECT之前有双引号;这意味着你发送的MySQL是这样的:

“选择S *,S.user_one为USER_ID,S.id,U.username,U.profile_photo来自用户的U,......”

你需要去掉查询周围的双引号。