2012-01-10 114 views
-2

幾周前我的代碼一切正常,但最近我一直無法加載我的測試數據庫在我的web應用程序(使用CakePhp構建)。無效的SQL語法錯誤

這是錯誤:

Warning (512): SQL Error: 1064: 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 ') LEFT JOIN blogs AS Blog ON (Song . blog_id = Blog . id) WHERE 1 = 1' at line 1 [CORE/cake/libs/model/datasources/dbo_source.php, line 684]

SELECT COUNT(*) AS `count` 
FROM `songs` AS `Song` 
LEFT JOIN libraries AS `Library` ON (`Song`.`id` = `Library`.`song_id` AND `Library`.`user_id` =) 
LEFT JOIN `blogs` AS `Blog` ON (`Song`.`blog_id` = `Blog`.`id`) 
WHERE 1 = 1 

Warning (512): SQL Error: 1064: 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 ') WHERE 1 = 1 ORDER BY Song . postdate desc LIMIT 100' at line 1 [CORE/cake/libs/model/datasources/dbo_source.php, line 684]

SELECT *, Blog.id 
FROM `songs` AS `Song` 
LEFT JOIN libraries AS `Library` ON (`Song`.`id` = `Library`.`song_id` AND `Library`.`user_id` =) 
WHERE 1 = 1 
ORDER BY `Song`.`postdate` DESC 
LIMIT 100 

回答

4

你沒有條件的Library.userid列:

Library.user_id =) 

您需要在等號右側指定的值!

2

你的錯誤是在這裏:

Library.user_id =) 

也許你想要將其更改爲:

Library.user_id ='$user_id') 
1

看來,對於一些user_id價值沒有被傳遞到查詢:

`Library`.`user_id` =) 
//-----------------^^^^ 

可能的是,有一些PHP變量在這裏失去了,或者PDO參數沒有被正確綁定。

0
SELECT COUNT(*) AS `count` FROM `songs` AS `Song` 
left JOIN libraries AS `Library` 
ON (`Song`.`id` = `Library`.`song_id` AND `Library`.`user_id` =) <-- HERE's something missing 
LEFT JOIN `blogs` AS `Blog` ON (`Song`.`blog_id` = `Blog`.`id`) WHERE 1 = 1 

SELECT *, 
Blog.id FROM `songs` AS `Song` left JOIN libraries AS `Library` 
ON (`Song`.`id` = `Library`.`song_id` AND `Library`.`user_id` =) <-- HERE's something missing 
WHERE 1 = 1 ORDER BY `Song`.`postdate` desc LIMIT 100 
0

既然這是一個CakePHP問題,我的答案將從框架的範式接近。但是,考慮到你的SQL輸出,你要麼不使用CakePHP,要麼你正在做的事情絕對是一個不可否認的事情。

請發表您使用構建這條SQL語句和你LibraryhasMany關係Blog查找聲明。除非您使用查詢方法,否則我認爲在使用CakePHP查找約定構建此類SQL語句之前,您會遇到PHP錯誤。如果您使用query方法查找數據,則不要。這是一個簡單的查詢,可以使用CakePHP輕鬆查找。

你的庫模型應該喜歡就好:

public $hasMany => array('Blog'); 

而且發現:

$this->Library->find(
    'all', 
    array(
     'conditions' => array(
      '1' => 1 //Not sure why you have Where 1=1 
     ) 
     'order' => "Library.name DESC", 
     'limit' => 100 
    ) 
);