[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по массиву
Godwarlock
Есть такой вот кусок кода
 $query = $DB->query("SELECT `source_id`,`source_type` FROM `items` WHERE `id`={$item_id} LIMIT 1");

while($item = $query->fetch_assoc()){
$items[] = $item;
}
Core::encodeData($items);

На выходе получаю

{
0: {
source_id: "1",
source_type: "weapon"
}
}

Подскажите, как дальнейшем работать с джейсоновым массивом?
К примеру мне надо сделать выборку под БД, таким образом:
$query = $DB->query("SELECT `id`,`name` FROM $items['source_type'] WHERE `id`=$items['source_id'] LIMIT 1");

Но так не работает, показывает ошибки
Notice: Undefined index: source_type
Notice: Undefined index: source_id

Буду благодарен за помощь
AllesKlar
Core::encodeData($items);
И получишь норманый массив с числовыми индексами, элементы которого есть ассоциативные массивы - строки результата запроса

Если уж Core::encodeData($items) по каким-то реигиозным причинам необходимо, то преобразовать обратно
$items = json_decode($items);

Но это будет знатный говнокод.


_____________
[продано копирайтерам]
Godwarlock
Notice: Array to string conversion in
Array
Вот что выдаёт без encode
AllesKlar
Godwarlock
Показывай
while($item = $query->fetch_assoc())
{
$items[] = $item;
}
var_damp($items)



$items['source_type'] - это не верно, у тебя должна получиться структура
$items[0]['source_type']
$items[1]['source_type']
....
$items[n]['source_type']

_____________
[продано копирайтерам]
Invis1ble
Цитата (AllesKlar @ 27.04.2015 - 19:40)
var_damp($items)

сейчас он покажет Syntax error тебе
а потом Fatal error call to undefined function smile.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

AllesKlar
Invis1ble
Ну нельзя же жить одним копи-пастом biggrin.gif
Произношение же верное smile.gif

_____________
[продано копирайтерам]
Godwarlock
array(1) { [0]=> array(2) { ["source_id"]=> string(1) "1" ["source_type"]=> string(6) "weapon" } }
Спасибо за помощь)
Godwarlock
И тогда еще такой вопрос. В БД хранится запись такого вида в поле stat

{"gore": 0, "more": 0}

Кто может подсказать примерчик-код, чтобы изменить значение more или наоборот gore к примеру на 1 и сделать запись с обновленными данными в бд)
AllesKlar
Цитата (Godwarlock @ 27.04.2015 - 23:26)
И тогда еще такой вопрос. В БД хранится запись такого вида в поле stat

{"gore": 0, "more": 0}

Кто может подсказать примерчик-код, чтобы изменить значение more или наоборот gore к примеру на 1 и сделать запись с обновленными данными в бд)

Ах вон оно, где собака порылась.

ну тогда, у тебя наверняка есть Core::decodeData($item), читаешь из базы и каждую строку результата прогоняешь через своё это Core::decodeData($item),
На выходе будет массив, меняешь данные. Кодируешь назад уже известной Core::encodeData() и пишешь результат ее работы в базу.

Если Core::decodeData($item) нет, то можно сразу в лоб
$new_array = json_decode($item);
if( ! is_null($new_array) )
{
$new_array['gore'] = 1;
$new_array['more'] = 1;

$db_json = Core::encodeData($new_array);

$query = 'UPDATE .... ';
}


_____________
[продано копирайтерам]
Godwarlock
Ммм. Столкнулся кое с чем непонятным. Сделал по вашей логике. Вроде перезаписал массив сэнкодил его, но в бд не записывается.

$good = \Core::encodeData($item_armor);
echo var_dump($good);

$query = $DB->query("UPDATE `player_characters` SET `armor`={$good} WHERE `user_id`={$user_id} LIMIT 1");


var_dump выводит переменную типа string
string(127) "{"helmet":0,"armor":0,"shoulders":0,"gloves":0,"leggins":0,"boots":0,"type_weapon":0,"l_weapon":0,"r_weapon":"1","lr_weapon":0}"
Но вот что-то не идет запись. Если заменить в запросе $good на что-то другой, например число, то записывается. По началу подумал, что в поле в бд символов не хватает, но нет, там все нормально.
AllesKlar
Строки в SQL обрамляются одинарными кавычками.
... SET `armor`='{$good}' WHERE  ... 


_____________
[продано копирайтерам]
Godwarlock
AllesKlar
Вы мой герой!)) Спасибо большое))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.