2013-11-11 6 views
0

У меня есть оператор select и инструкция по обновлению. То, что я хотел бы сделать в инструкции обновления, задает значение «recipes_saved» для результата оператора select. Я попытался использовать это:SQL: используйте результаты одного запроса в другом запросе

$query = "UPDATE `users` SET `recipes_saved` = ('SELECT `recipe_1_name` FROM `carbohydrates`') WHERE `user_id` = '" . $_SESSION['user_id'] . "'"; 

$data= mysqli_query($dbc,$query) or die('Query failed: ' . mysqli_error()); 

, но запрос не удался.

Любая помощь будет высоко оценена.

+1

какая ошибка вы получаете? – DrCopyPaste

+0

Что вы хотите установить в recipes_saved? ваш запрос, похоже, устанавливает имя recipe_1_name ... – Aris

+0

@DrCopyPaste, что появляется, это запрос не удалось: –

ответ

0

Я думаю, что у вас есть в вашем дополнительный ' 'SELECT, а также в вашем ОТcarbohydrates' и используйте LIMIT снова, как:

Попробуйте скопировать ниже запрос:

$query = "UPDATE `users` SET `recipes_saved` = (SELECT `recipe_1_name` FROM `carbohydrates` LIMIT 1) WHERE `user_id` = '" . $_SESSION['user_id'] . "'"; 

Вы могли бы, конечно, удалить обратный тик, если хотите сделать это менее захламленным, например:

$query = "UPDATE users SET recipes_saved = (SELECT recipe_1_name FROM carbohydrates LIMIT 1) WHERE user_id = '" . $_SESSION['user_id'] . "'"; 
+0

спасибо @edper Я удалил кавычки, но не повезло –

+0

@SarahAl Попробуйте выполнить «echo $ query» и скопируйте выходные данные в ваш OP, чтобы мы могли внимательно изучить, что на самом деле – Edper

+0

это результат UPDATE users SET recipes_saved = (SELECT recipe_1_name FROM углеводы LIMIT 1) WHERE user_id = '37' –

0

Насколько я знаю, вам не нужно столько котировок в вашем запросе. Попробуйте:

$query = "UPDATE users SET recipes_saved = (SELECT recipe_1_name FROM carbohydrates) WHERE user_id='" . $_SESSION['user_id'] . "'"; 

Было бы также полезно, чтобы войти в вашу базу данных напрямую (либо в командной строке или клиент GUI) и попробуйте запустить запрос:

UPDATE users SET recipes_saved = (SELECT recipe_1_name FROM carbohydrates) WHERE user_id='username' 

и посмотреть, если это работает.

+0

спасибо @matt Я запустил следующее в моей базе данных: пользователи UPDATE SET recipes_saved = (SELECT recipe_1_name из углеводов) WHERE user_id = 20, и это сработало. Удалены ненужные цитаты из запроса в моем коде, и он все еще не работает. –

+0

. Я уверен, что идентификатор пользователя верен, поскольку я повторяю это, прежде чем делать запрос. –

+0

В этом случае я думаю, что проблема связана с вашей отчетностью об ошибках - предполагая, что $ dbc - это ваше соединение и настроено правильно, попробуйте изменить mysqli_error() на mysqli_error ($ dbc) – Matt

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