Как обновить информация в столбце в mysql?

206
07 февраля 2018, 14:12

Есть столбик xfields, в котором присутствует подобное содержание:

price     | 2554644 |
price_eur |  71800  |
code      |  Volvo  |
year      |  2011   |
on        |    1    |

Я проделываю такую операцию - делаю парсинг курса валют из json и умножаю число из "price_eur", то есть 71800, и записываю его обратно. Перед этим делаю запрос в БД на удаление старой цены price|2554644|, и через CONCAT дописываю новое значение.

Проблема в том, что, к примеру, число из price_eur берется из первой записи, и поэтому при обновлении у всех цена становится одинаковой.

Суть вопроса - как сделать запись цены для каждой таблицы отдельно? Думаю сделать через проверку id записи.

Подскажите, как это можно сделать?

То есть что бы запись выполнялась так

UPDATE " . PREFIX . "_post SET xfields= CONCAT(xfields, '||price|', $xflist WHERE id=$id);

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

Прилагаю целый код:

<?php
if( ! defined( 'DATALIFEENGINE' ) ) { die( "Hacking attempt!" ); }  
if(!$xflist) {
    $sql_result = $db->query( "SELECT xfields  FROM " . PREFIX . "_post" );
    while ( $rows = $db->get_row( $sql_result ) ) {
        $xfields[] = $rows;
    }   
    $stack = array();
    foreach($xfields as $value){
        if($value[xfields]){
            $row = xfieldsdataload($value[xfields]);
            if($row[price_eur]){
                $rowdata = explode( "|", $row[price_eur]);
                foreach($rowdata as $value){
                    if($value){
                        $value = trim($value);
                        array_unshift($stack, $value);
                    }
                }
            }
        }
    }
    $json = file_get_contents('https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5');
    $data = json_decode($json, true);
    $buy_eur = $data[1]['buy'] ;
    $stack = array_unique($stack);
    sort ($stack);  
    foreach( $stack as $value ){
        $xflist = $value * $buy_eur;
    }
}
  $db->query("UPDATE dle_post SET xfields = REPLACE(xfields, CONCAT ('price|', SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, 'price|', -1 ) ,  '||', 1 )), '')");
   $db->query( "UPDATE " . PREFIX . "_post SET xfields= CONCAT(xfields, '||price|', $xflist)");
?>

UPD: Прилагаю фото Как мне сделать, чтобы price_eur которое в столбце xfields бралось к примеру из столбца id 39 умножалось на число из json и записывалось обратно в строку с id 39.

То есть чтобы откуда взяло число туда и записало. Чтобы была проверка по id. Иначе оно берет price_eur из первой попавшейся столбца и записывает во все остальные. А цена везде разная. Надеюсь, что теперь немного понятней стало )

READ ALSO
Не работают псевдонмы

Не работают псевдонмы

Не понимаю, почему этот алиас работает

159
PHP. Send file to endpoint as binary data [требует правки]

PHP. Send file to endpoint as binary data [требует правки]

In the example below, the file is sent as a stringIs it possible to send a file as a binary data via Guzzle? I mean, send the file as is, without reading

186
PHP - Как удалить весь код, кроме &lt;table&gt;…&lt;/table&gt;?

PHP - Как удалить весь код, кроме <table>…</table>?

В PHP не силён вовсеЗнаю, что вопрос решается через preg_replace, но как точно?

207
Как указать размер изображения в pchart

Как указать размер изображения в pchart

В документации pchart для drawFromJPG можно изменять только отступ картинкиА можно ли изменить размер передаваемой картинки? К примеру уменьшить...

167