2017-01-06 4 views
0

следующие работы по назначению в MySQL (PhpMyAdmin):Перенести рабочий MySQL несколько запросов к PHP

SET @randomComposer=(SELECT composer FROM compositions ORDER BY RAND() LIMIT 1); 
SELECT * FROM compositions WHERE composer!='' AND [email protected]; 

Но я не могу носить это снова в PHP. Используя конкатенацию запросов, подсветка синтаксиса выходит из строя в начале строки SET ... и я получаю сообщение об ошибке, запрашивающую базу данных. Как я могу убедить PHP распознать рабочий MySQL?

(исследования привели меня к mysqli_multi_query, что я понимаю, маршрут мне нужно следовать, но в первую очередь необходимо разобраться в антипатию PHP для SET.)

+0

Похоже, что первая строка должна работать как подзапрос, если вы хотите попробовать сделать это только с одним утверждением. –

+0

Я уже пробовал подзапрос, но безуспешно. В этом случае я использовал SELECT ... ORDER BY RAND ... часть первой строки, не устанавливая переменную. – DublinJimbo

ответ

1

Это, как я хотел бы попробовать сделать это с одним заявление.

SELECT compositions.* FROM compositions 
INNER JOIN 
(SELECT composer FROM compositions ORDER BY RAND() LIMIT 1) AS RandComposer 
ON compositions.composer = RandComposer.composer 

Вам может понадобиться добавить WHERE composer!='' к подзапросу.

+0

Ты звезда! Я крутился по кругу с вариациями того, что, как я думал, был подзапросом, все без успеха (синтаксическая ошибка после синтаксической ошибки). Теперь я пробовал свой код, и он работает отлично. – DublinJimbo

+0

Еще раз спасибо. Я уже заметил композитора WHERE! = '' И сам добавил его. Сегодня я буду хорошо спать! – DublinJimbo

+0

Добро пожаловать! –

Смежные вопросы