Запрос запускается в phpmyadmin, но не через приложение

0

Привет, у меня есть интересная проблема.

Обновление: Из комментариев, которые возникают ниже, похоже, проблема одновременного запуска нескольких запросов. Я предположил, что, поскольку я делал это в phpmyadmin, тогда все было хорошо. Как можно запускать несколько запросов? Я использую mysqli? Я использую mysql 5.x и используя mysqli

Я запускаю свой запрос из своего приложения, и если запрос не работает, я эхо его на экран. Наряду с ошибкой

Когда я запускаю свое приложение, я получаю свой запрос на экран и эту ошибку.

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с "ALTER TABLE tmp_bulletins ADD INDEX (bb_id); 'в строке 13

 Когда я копирую запрос, который был эхом на экран и запускал его в phpmyadmin, он отлично работает каждый раз. Затем я попытался выполнить запрос, который был отозван на экран и запущен в базе данных через мое приложение, и это не сработает.

Насколько я могу судить, тот же самый запрос (тот напечатанный на моем экране) работает через phpmyadmin, но не через мое приложение.

Есть ли причина, по которой это может случиться? Увеличивает ли phpmyadmin некоторые изменения в запросе, прежде чем запускать его в базе данных?

Вот запрос

CREATE TEMPORARY TABLE tmp_bulletins

                   SELECT {$table}.id AS bb_id,count(bb_replies.id) AS num_responses,bb_locations.title AS location,bb_locations.description AS location_description,bb_categories.title AS category,bb_categories.description AS category_description,Concat(users.first_name,' ',users.last_name) AS full_name,users.first_name AS first_name,users.last_name as last_name,users.id AS user_id,{$table}.title AS post_title,{$table}.content,{$table}.created_date,{$table}.rank 
                   FROM `{$table}` 
                   LEFT JOIN bb_locations ON {$table}.bb_locations_id = bb_locations.id
                   LEFT JOIN bb_categories ON {$table}.bb_categories_id = bb_categories.id
                   LEFT JOIN users ON {$table}.users_id = users.id
                   LEFT JOIN bb_replies ON {$table}.id = bb_replies.bbs_id
                   WHERE `bb_locations_id` IN ({$locations_csv}) AND `bb_categories_id` IN ({$categories_csv}) {$addWhere}
                   GROUP BY bb_id,location,location_description,category,category_description,first_name,last_name,user_id,post_title,content,created_date,rank
                   {$order} {$limit} ;

              ALTER TABLE tmp_bulletins ADD INDEX (`bb_id`);


              CREATE TEMPORARY TABLE tmp_ratings      

                   SELECT bbs_id,
                   sum(CASE WHEN user_id = {$user_id} THEN like_dislike_id END) AS thisUsersRating,
                   SUM(CASE WHEN like_dislike_id = 2 THEN 1 ELSE 0 END) AS likes, 
                   SUM(CASE WHEN like_dislike_id = 1 THEN 1 ELSE 0 END) AS dislikes
                   FROM bb_ratings
                   GROUP BY bbs_id;  

              ALTER TABLE tmp_ratings ADD INDEX (`bbs_id`); 

              SELECT * FROM tmp_bulletins
          LEFT JOIN tmp_ratings on tmp_bulletins.bb_id = tmp_ratings.bbs_id;

И запрос, который он производит (редактирование внешнего вида, когда мы говорим)

    CREATE TEMPORARY TABLE tmp_bulletins 
    SELECT bbs.id AS bb_id,count(bb_replies.id) AS num_responses, 
    bb_locations.title AS
     location,bb_locations.description AS location_description,
    bb_categories.title AS
     category,bb_categories.description AS category_description,
    Concat(users.first_name,' ',users.last_name) AS full_name,
    users.first_name AS first_name,
    users.last_name as last_name,users.id AS user_id,
    bbs.title AS post_title,
    bbs.content,bbs.created_date,bbs.rank FROM `bbs` 
    LEFT JOIN bb_locations ON bbs.bb_locations_id = bb_locations.id 
    LEFT JOIN bb_categories ON bbs.bb_categories_id = bb_categories.id 
    LEFT JOIN users ON bbs.users_id = users.id LEFT JOIN bb_replies ON bbs.id = bb_replies.bbs_id WHERE `bb_locations_id` IN (1,2) AND `bb_categories_id` IN (1,2) 
    GROUP BY bb_id,location,location_description,category,category_description,first_name,last_name,user_id,post_title,content,created_date,rank LIMIT 0,5; ALTER TABLE tmp_bulletins 
    ADD INDEX (`bb_id`); 

    CREATE TEMPORARY TABLE tmp_ratings 
    SELECT bbs_id, sum(CASE WHEN user_id = 1 THEN like_dislike_id END) AS thisUsersRating, SUM(CASE WHEN like_dislike_id = 2 THEN 1 ELSE 0 END) AS likes,
    SUM(CASE WHEN like_dislike_id = 1 THEN 1 ELSE 0 END) AS dislikes FROM bb_ratings GROUP BY bbs_id; 
ALTER TABLE tmp_ratings ADD INDEX (`bbs_id`); 

    SELECT * FROM tmp_bulletins LEFT JOIN tmp_ratings on tmp_bulletins.bb_id = tmp_ratings.bbs_id
  • 1
    Как насчет публикации фактического запроса?
  • 0
    Итак, мне нужно, чтобы пользователь multi_query? это все очень ново для меня, я никогда не запускал более одного запроса за раз. Будет ли это причиной проблемы?
Показать ещё 1 комментарий
Теги:
phpmyadmin

3 ответа

1
Лучший ответ

mysql_query() отправляет уникальный запрос (несколько запросов не поддерживаются) к текущей активной базе данных на сервере, которая связана с указанным link_identifier.

Вы выполняете сразу несколько запросов?

ИЗМЕНИТЬ

Ваши запросы сложны, упрощают и запускают запрос по запросу. Чтобы определить проблему.

  • 0
    Да я использую mysqli
  • 0
    Есть ли способ отправить несколько запросов, когда вы используете mysqli, потерпите меня, я все еще разбираюсь в mysqli и запросах к базе данных
Показать ещё 4 комментария
2

Выньте точку с запятой.

  • 0
    какая точка с запятой, как это поможет? почему имеет значение при запуске через phpmyadmin или через мое приложение?
  • 0
    Вы не даете никаких подробностей, и вы предполагаете, что я буду знать, о чем вы говорите.
Показать ещё 1 комментарий
0

Было бы хорошо, если бы вы могли показать весь запрос.

Используете ли вы несколько запросов? Если да, это будет работать в PMA, но без PMA это зависит от mysql-версии и настроек, если это может сработать.

  • 0
    да, я сохраняю первые два запроса во временных таблицах, а затем выполняю запрос на этих двух
  • 0
    но я выполняю запрос в той же базе данных. Я установил xampp, поэтому не должны ли PMA и мое приложение выполнять запросы одинаково? Если нет, какие изменения мне нужно внести в мое приложение?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню