添加换行符时出现SQL错误1064

时间:2012-07-03 13:21:03

标签: php mysql

我有一个我想要处理的查询,因此我以更简单的方式对其进行格式化。但是,当我刷新页面时,我收到错误1064.我唯一做的就是添加换行符。即使我只添加1个换行符,也会出现此错误。

以下是原始查询:

$listing_sql = "select " . $select_column_list . " p.products_id, p.products_model, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";

只需在FROM之前添加1或2个换行符,如下所示:

$listing_sql = "select " . $select_column_list . " p.products_id, p.products_model, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price 

from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";

导致错误出现我正在使用带有mysql版本5.5.16的wamp服务器和php版本5.2.2 appache 2.0.63

2 个答案:

答案 0 :(得分:2)

这是因为您在查询中添加了\n或大的差距。

如果您停止as final_price处的引号,然后添加换行符,然后继续字符串. 'from ' . TABLE...,您应该会发现错误没有发生。

在查询后直接输入此代码,您应该会看到错误。

echo $listing_sql;
exit();

答案 1 :(得分:2)

你把换行符放在一个字符串的中间,这是mysql服务器不喜欢的。将查询分成多行的合理方法是:

$listing_sql = "select " . $select_column_list . 
" p.products_id, p.products_model, p.manufacturers_id, p.products_price, " .
"p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as " .
"specials_new_products_price, IF(s.status, s.specials_new_products_price, " .
"p.products_price) as final_price from " . 
TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . 
TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . 
TABLE_SPECIALS . " s on p.products_id = s.products_id, " . 
TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and " .
"p.products_id = p2c.products_id and pd.products_id = p2c.products_id and " .
"pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . 
(int)$current_category_id . "'";