FOREACH и UPDATE mysql не работает

У меня есть запрос select, за которым следует запрос на обновление внутри цикла foreach.

Я могу получить данные из select, и я использую его как json для рисования диаграммы, но для другой таблицы, которая должна быть обновлена ​​с теми же данными из select, указанная подана становится 0 иногда 1 или 2!
Я попытался использовать выбор для обновления, и это нормально (обновить .... (выберите ...)), но внутри foreach он не работает. Я также попытался использовать другие столбцы, но тот же результат, всегда получаю 0. Любая идея, пожалуйста? Спасибо заранее

это мой код

public function actionGetSensorsDataLive($beamId) {
    header('Content-Type: application/json; charset="UTF-8"');
    $sensorsIds = Sensor::model()->findAllBySql('SELECT sensor_id FROM sensor where 
                             node_id="' . $beamId . '" and sensor_name = "I" ;');

    foreach ($sensorsIds as $s) {
        $sResult = array();
       $modelSensor = SensorInfo2::model()->findBySql('SELECT * FROM information_sensor  
             where sensor_id= "' . $s['sensor_id'] . '"');

        $sResult = array(($modelSensor->information_sensor_time),
            ($modelSensor->information_sensor_value));
        /////////////// update//////////////// 
       //for every information_sensor_time that I get from the previous query  
        // I want
       // to update a row in another table //

        foreach ($modelSensor as $up) {
            $connection = yii::app()->db;

            $sql = 'UPDATE last_point  SET last_point_time = "' . 
                             $up['information_sensor_time'] . '"
            WHERE sensor_id= "' . $s['sensor_id'] . '"  ';

            $command = $connection->createCommand($sql);
            $command->execute();
        }
        /////update end///////               
    }
    echo json_encode($sResult);
    Yii::app()->end();
}
0
nl ja de
спасибо Алекс, у меня все еще такая же проблема. Я думаю, что моя проблема в цикле foreach, и как объединить обновление и выбрать вместе, не используя цикл, поскольку у меня есть только одна запись. Любая идея, пожалуйста? благодаря
добавлено автор Ben, источник
Если SQL прост, вам следует использовать Query Builder, yiiframework. com/doc/guide/1.1/en/database.query-builder и не вставлять параметры напрямую.
добавлено автор Alex, источник

3 ответы

наконец, я использовал этот код

foreach ($sensors as $sensor)  {
$lastPointId = 1;  
$lastPoint = LastPoint::model()->findByPk($lastPointId);
$lastPoint->last_point_info = $sensor->information_time;
if ( ! $lastPoint->save()) {
    throw new CException('Unable to save last point.');
}
}

Спасибо за все

0
добавлено
 $sensorsIds=Sensor::model()->findAllBySql('SELECT sensor_id FROM lead where 
                         node_id="'.$beamId.'" and sensor_name = "I" ;' );

Remove ;

 $sensorsIds=Sensor::model()->findAllBySql('SELECT sensor_id FROM lead where 
                         node_id="'.$beamId.'" and sensor_name = "I"' );

Теперь попробуйте это.

0
добавлено
спасибо devang, та же проблема, в первой части моего кода нет проблем (поскольку я получаю данные, и я могу их нарисовать), проблема заключается в инструкции обновления с foreach
добавлено автор Ben, источник

Вы используете findBySql() `, который возвращает только одну запись, а затем делает foreach на этом нет смысла. поэтому cheng линия

 $modelSensor = SensorInfo2::model()->findBySql('SELECT * FROM information_sensor  
             where sensor_id= "' . $s['sensor_id'] . '"');

в

$modelSensor = SensorInfo2::model()->findAllBySql('SELECT * FROM information_sensor  
             where sensor_id= "' . $s['sensor_id'] . '"');

И вы shoud используете querybuilder, который намного безопасен, как было предложено Alex

0
добавлено
Думаю, мне лучше объяснить. Это сценарий, действие «actionGetSensorsDataLive» будет запросом с помощью вызова ajax, чтобы получить последнюю запись в моей таблице, поэтому я использовал finBysql. Я хочу сохранить запись извлеченной точки, обновив другую таблицу. например, я изменю свой запрос, чтобы извлечь точку в соответствии с этой записью, когда моя таблица sensor_info будет обновляться в реальном времени. моя проблема заключается в том, как сделать два запроса, выбирать и обновлять вместе. И если я могу сделать инструкцию select и update при использовании вывода моего запроса select. И если петля foreach правильная или нет? много thnaks
добавлено автор Ben, источник
когда вызов «actionGetSensorsDataLive» будет извлекаться только последняя точка в моей таблице (findbysql), эта точка (x, y), я буду использовать ее, нарисовать график, и я хочу обновить последнюю точку таблицы значением x через одну секунду будет выполнен другой вызов ajax (моя таблица будет обновляться непрерывно) и выберите последнюю точку в моей таблице и так далее. каждый раз, когда я выбираю (x, y), я обновляю последнюю точку таблицы со значением x.
добавлено автор Ben, источник
Я не отменил эту проблему. Сколько очков необходимо обновить для одного SensorInfo2 ? это отношение HAS_MANY?
добавлено автор dInGd0nG, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

Yii Framework
Yii Framework
1 076 участник(ов)

Russian and english speaker comunity

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp

Yii - вакансии, работа, фриланс
Yii - вакансии, работа, фриланс
264 участник(ов)

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