Обновление php mysql с двумя неработающими таблицами

Я делаю обновление, используя две таблицы, но по какой-то причине оно не работает и не генерирует ошибку, поэтому я не могу найти проблему. Кто-нибудь может пролить свет на это? Почему это не работает?

$upd = "
UPDATE table t
     , images i 
   SET t.image_blob = i.image_blob 
 WHERE t.record_id='".$rid."' 
   AND i.image_id='".$iid."'";<br>
$dbh->exec($upd);

Другими словами, я хочу взять конкретную запись из таблицы изображений (где находится image_id=$iid) и обновить таблицу (t), где находится record_id=$rid.

У вас <br> после команды. Вы это пропустили?

Felippe Duarte 30.07.2018 21:59

Вам не нужно ключевое слово table, просто UPDATE t, images i...

Anch0rman 30.07.2018 22:12

Ваш стол действительно называется table? Это зарезервированное слово, и его нельзя использовать в качестве идентификатора без кавычек с обратными кавычками. Но лучше было бы просто переименовать, если можно. dev.mysql.com/doc/refman/5.7/en/keywords.html

Don't Panic 30.07.2018 22:16
ПРЕДУПРЕЖДЕНИЕ: по возможности используйте подготовленные заявления, чтобы избежать внедрения произвольных данных в ваши запросы и создания Ошибки внедрения SQL. Это довольно просто сделать в mysqli и PDO, где любые предоставленные пользователем данные указываются с помощью индикатора ? или :name, который позже заполняется с помощью bind_param или execute, в зависимости от того, какой из них вы используете.
tadman 30.07.2018 22:20

Попробуйте использовать join ..

Adlan Arif Zakaria 31.07.2018 03:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
46
1

Ответы 1

В вашем коде сначала вы говорите, что собираетесь обновить 2 таблицы, но затем вы обновляете только таблицу t. Если таблицы не связаны с иностранными ключами, вы можете попробовать следующее:

$upd = "
UPDATE table t
   SET t.image_blob = (SELECT i.image_blob FROM images i WHERE i.image_id='".$iid."') 
 WHERE t.record_id='".$rid."'";
$dbh->exec($upd);

в противном случае вы можете попробовать решение, данное на Обновление одной таблицы на основе данных из нескольких таблиц SQL Server 2005,2008, используя "FROM" и "JOIN's"

Другие вопросы по теме