-1

取り組みたいクエリがあるので、読みやすいようにフォーマットしました。ただし、ページを更新すると、エラー 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 および php バージョン 5.2.2 appache 2.0.63 で wamp サーバーを使用しています

4

2 に答える 2

2

これは、クエリに文字通り\nまたは大きなギャップを追加しているためです。

で引用符を停止し、as final_price改行を追加してから文字列を続けた. 'from ' . TABLE...場合、エラーは発生しないはずです。

クエリの直後にこのコードを入力すると、エラーが表示されます。

echo $listing_sql;
exit();
于 2012-07-03T13:32:51.220 に答える
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 . "'";
于 2012-07-03T13:36:03.100 に答える