PHP / mySQL – использование результата из «CONCAT» и «AS» в разделе «LIKE»

Привет, у меня есть следующий код;

if( ! empty( $post['search-bar'] ) ) { $search_data = preg_replace("#\s\s#is", '', preg_replace("#[^\w\d\s+]#is", '', $post['search-bar'] ) ); $data_array = explode( " ", $search_data ); $data_array = "'%" . implode( "%' OR '%", $data_array ) . "%'"; $query = " SELECT CONCAT( PROFILE_PROFFESION, FIRST_NAME, LAST_NAME, DISPLAY_NAME) AS 'STRING' FROM `" . ACCOUNT_TABLE . "` WHERE STRING LIKE ( " . $data_array . " ) AND BUSINESS_POST_CODE LIKE '" . substr(P_BUSINESS_POST_CODE, 0, 4) . "%'"; $q = mysql_query( $query, $CON ) or die( "_error_" . mysql_error() ); if( mysql_num_rows( $q ) != 0 ) { die(); } } 

Проблема в том, что я хочу использовать temp col 'STRING' в предложении where, но возвращает «unknown coloumn STRING Может ли кто-нибудь указать мне в правильном направлении, считает Phil

Я распечатал запрос;

 SELECT PROFILE_PROFFESION, FIRST_NAME, LAST_NAME, DISPLAY_NAME FROM nnn_accounts WHERE CONCAT( PROFILE_PROFFESION, FIRST_NAME, LAST_NAME, DISPLAY_NAME) LIKE ( '%web%' OR '%design%' ) AND BUSINESS_POST_CODE LIKE 'NG19%' 

Wrap STRING в `вместо '

Должно быть: ..AS `STRING`

И тогда везде, где вы ссылаетесь на STRING, должно быть `STRING`

Изменить: Здесь это должно решить это:

 SELECT CONCAT( PROFILE_PROFFESION, FIRST_NAME, LAST_NAME, DISPLAY_NAME) AS `STRING` FROM `" . ACCOUNT_TABLE . "` WHERE BUSINESS_POST_CODE LIKE '" . substr(P_BUSINESS_POST_CODE, 0, 4) . "%'" HAVING `STRING` LIKE ( " . $data_array . " ) ; 

Да, похоже, вы просто не можете использовать temp col в предложении where, просто укажите его как есть:

 WHERE CONCAT( PROFILE_PROFFESION, FIRST_NAME, LAST_NAME, DISPLAY_NAME) LIKE '%$data_array%') 

Удалить цитаты вокруг 'STRING'

Синтаксис, который был более подходящим, был

 SELECT CONCAT( PROFILE_PROFFESION, FIRST_NAME, LAST_NAME, DISPLAY_NAME) AS `STRING` FROM `tablename` WHERE BUSINESS_POST_CODE LIKE 'NG19%' HAVING `STRING` LIKE '%web%' OR `STRING` LIKE '%design%'