Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
6 / 6 / 7
Регистрация: 16.05.2013
Сообщений: 351
MS SQL

Запись JSON строки в БД

06.07.2017, 17:24. Показов 6224. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Мучаюсь с записью данных в базу. Нужно в столбец записать строку в формате JSON типа:
"[{"text":"1","checked":"false"},{"text":"2","checked":"true"}]"

Для записи использую следующий php файл (в config.php всё нормально, остальные файлы с ним работают нормально):
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
include('config.php');
 
// Verify if user exists for login
if(isset($_GET['id']) && isset($_GET['data'])){
 
$id = $_GET['id'];
$data = $_GET['data'];
 
$sql = "UPDATE USERS SET data='" . $data . "' WHERE id='". $id . "'" or die ("ERROR: ".mysqli_error());
 
if (mysqli_query($link, $sql)){
    echo "success";
} else {
    echo "error";
}
}
 
mysqli_close($link);
?>
Однако в качестве результата получаю ни 'success', ни 'error', а ПУСТУЮ СТРОКУ.
Подскажите, пожалуйста, как сохранять строки в подобном формате? По-любому есть какая-то проблема тут =)

Как обрабатываю php:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var http = new XMLHttpRequest();
function updateBase(){
    var string = localStorage.getItem('currentList');
    var user = getLoggedUser();
    var nocache = 0;
    nocache = Math.random();
 
    http.open('GET', '/updatelistdata.php?id='+user.id+'$data='+string+'&nocache = '+nocache, true);
    http.onreadystatechange = updateBaseReply;
    http.send(null);
}
 
function updateBaseReply(){
    if(http.readyState == 4 && http.status == 200){ 
        var response = http.responseText;
        if(response == 'ok'){
            // if login fails
            alert('Data saved. Goodbye!');
            // else if login is ok show a message: "Welcome + the user name".
        } else {
            
            alert('Error! Failed to save data.' + response)
        }
    }
}
Заранее благодарю за любые ответы и советы!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.07.2017, 17:24
Ответы с готовыми решениями:

Пропадает конец Json строки, при передаче Json строки через Ajax
Всем привет. Возникла следующая проблема. Из php получаю json строку, полученную с помощью json_encode() Далее, её отправляю обратно...

Как получить из строки JSON токен используя JSON.NET?
Доброго времени суток, Господа. Поскажите пожалуйста. Я никогда не работал с JSON. Вот тут решил попробовать. Качнул либу JSON.NET, все...

Запись JSON
Делаю редактор. Нужно при нажатии на кнопку &quot;Сохранить&quot;, обновить json-файл. Я знаю, что JavaScript не дает возможности записывать в...

12
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
06.07.2017, 17:45
строчка 10, вы сравниваете строку непонятно с чем
0
6 / 6 / 7
Регистрация: 16.05.2013
Сообщений: 351
06.07.2017, 18:22  [ТС]
Добавлено через 10 секунд
Цитата Сообщение от rodigy Посмотреть сообщение
строчка 10, вы сравниваете строку непонятно с чем
Что-то не так с этой строкой? Можете уточнить?
PHP
1
$sql = "UPDATE USERS SET data='" . $data . "' WHERE id='". $id . "'" or die ("ERROR: ".mysqli_error());
0
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
06.07.2017, 18:36
SnapeEye, Во-первых это бессмысленно сравнивать строку с die() и результатом будет всегда строка, и еще в mysqli_error($link) тоже нужно передать $link
Если соединение с бд у вас в конфиге, то должно быть что вроде этого
PHP
1
2
3
4
5
if (!$link) {
    die("ERROR: ".mysqli_error($link));
}
$sql = "UPDATE USERS SET data='" . $data . "' WHERE id='". $id . "'";
// ...
0
6 / 6 / 7
Регистрация: 16.05.2013
Сообщений: 351
06.07.2017, 18:51  [ТС]
Всё равно в response получаю пустую строку. Хотя её быть не может вообще...
0
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
06.07.2017, 23:58
SnapeEye, Покажите теперь новый код, и сделайте отображение ошибок в браузер
0
6 / 6 / 7
Регистрация: 16.05.2013
Сообщений: 351
07.07.2017, 10:31  [ТС]
Ошибок в браузере никаких нет. Просто приходит пустая строка в response...

Вызов:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var http = new XMLHttpRequest();
 
function updateBase(){
    var string = localStorage.getItem('currentList');
    var user = getLoggedUser();
    var nocache = 0;
    nocache = Math.random();
 
    http.open('GET', '/updatelistdata.php?id='+user.id+'$data='+string+'&nocache = '+nocache, true);
    http.onreadystatechange = updateBaseReply;
    http.send(null);
}
function updateBaseReply(){
    if(http.readyState == 4 && http.status == 200){ 
        var response = http.responseText;
        if(response == 'ok'){
            // if login fails
            alert('Data saved. Goodbye!');
            // else if login is ok show a message: "Welcome + the user name".
        } else {
            
            alert('Error! Failed to save data.' + response)
        }
    }
}
updatelistdata.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
include('config.php');
 
// Verify if user exists for login
if(isset($_GET['id']) && isset($_GET['data'])){
 
$id = $_GET['id'];
$data = $_GET['data'];
 
if (!$link) {
    die("ERROR: ".mysqli_error($link));
}
 
$sql = "UPDATE USERS SET data='" . $data . "' WHERE id='". $id . "'";
 
if (mysqli_query($link, $sql)){
    echo "success";
} else {
    echo "error";
}
}
 
mysqli_close($link);
?>
config.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// Connection's Parameters
$db_host="localhost";
$db_name="todoregbase";
$username="root";
$password="";
$link=mysqli_connect($db_host,$username,$password,$db_name) or die ("cannot connect");
 
if ($link->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
?>
0
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
07.07.2017, 16:42
SnapeEye, По конфигу вы смешиваете процедурный и ооп стиль работы с бд. Переменная $conn раньше не инициализирована и $conn->connect_error не существует
PHP
1
2
3
4
5
6
7
8
9
10
// Connection's Parameters
$db_host="localhost";
$db_name="todoregbase";
$username="root";
$password="";
$link=mysqli_connect($db_host,$username,$password,$db_name);
 
if (!$link) {
    die('Connect Error: ' . mysqli_connect_error());
}
0
6 / 6 / 7
Регистрация: 16.05.2013
Сообщений: 351
07.07.2017, 18:35  [ТС]
Спасибо, внес изменения.

Обновленный config.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// Connection's Parameters
$db_host="localhost";
$db_name="todoregbase";
$username="root";
$password="";
$link=mysqli_connect($db_host,$username,$password,$db_name) or die ("cannot connect");
 
if (!$link) {
    die("ERROR: ".mysqli_error($link));
}
?>
При обычном выполнении в консоле ошибки отсутствуют, однако при прохождении в режиме debug получаю следующее:
В index.html это строка '<html>', остаток файлов не мои, а Chrome (скорее всего, но не мои точно).


Не могу понять в чем ошибка... Написал php для регистрации/входа в учетную запись - всё хорошо. В каждом случае по идее меняется только запрос, данные и последующее формирование возврата. По сути обычные манипуляции. Никак не могу понять что не так!
0
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
08.07.2017, 16:00
SnapeEye, часть ошибок вызывает расширение браузера с идентификатором cfhdojbkj... Выключите его на момент проверки, остальные что из подключаемых скриптов
0
6 / 6 / 7
Регистрация: 16.05.2013
Сообщений: 351
08.07.2017, 16:25  [ТС]
Цитата Сообщение от rodigy Посмотреть сообщение
Выключите его на момент проверки
Выключил все что есть - ничего не поменялось. Получаю в responce пустую строку.

Уже чисто просто интересно узнать ту причину, что не дает сработать скрипту =)
Названия файлов совпадают:
JavaScript
1
http.open('GET', '/updatelistdata.php?id='+user.id+'$data='+string+'&nocache = '+nocache, true);


Актуальный код бросает никаких ошибок:
updatelistdata.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
include('config.php');
 
if(isset($_GET['id']) && isset($_GET['data'])){
 
$id = $_GET['id'];
$data = $_GET['data'];
 
$sql = "UPDATE USERS SET data='" . $data . "' WHERE id='". $id . "'";
 
if (mysqli_query($link, $sql)){
    echo "success";
} else {
    echo "error";
}
}
 
mysqli_close($link);
?>
config.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// Connection's Parameters
$db_host="localhost";
$db_name="todoregbase";
$username="root";
$password="";
$link=mysqli_connect($db_host,$username,$password,$db_name) or die ("cannot connect");
 
if (!$link) {
    die("ERROR: ".mysqli_error($link));
}
?>
Что же на столько критично, что возвращает в responce ПУСТУЮ СТРОКУ?) Просто ужас.
0
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
08.07.2017, 17:47
Вот еще:
Цитата Сообщение от SnapeEye Посмотреть сообщение
http.open('GET', '/updatelistdata.php?id='+user.id+'$data='+string+'&nocache = '+nocache, true);
Там должен быть &


Здесь при успешном запросе вы отвечаете success
PHP
1
2
3
4
5
if (mysqli_query($link, $sql)){
    echo "success";
} else {
    echo "error";
}
Но в скрипте проверяете на оk
JavaScript
1
2
3
4
5
6
7
if(response == 'ok'){
     // if login fails
     alert('Data saved. Goodbye!');
      // else if login is ok show a message: "Welcome + the user name".
} else {      
     alert('Error! Failed to save data.' + response)
}
1
6 / 6 / 7
Регистрация: 16.05.2013
Сообщений: 351
08.07.2017, 21:02  [ТС]
Чрезмерно благодарен за Ваш труд! Всё работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.07.2017, 21:02
Помогаю со студенческими работами здесь

Запись в json
Здравствуйте товарищи. Мне надо сформировать массив JSON в котором будут хранится координаты графика. Использую библиотеку SimpleJSON. ...

Запись в JSON
Всем привет! Данный участок кода записывает в строчку QVariantList b в QJsonDocument doc. Как записать по два элемента QVariantList b в...

Запись в JSON
Добрый вечер! Подскажите, пожалуйста. Можно записать данные в json файл используя только js, jquery или ajax? Нашел такой пример, но не...

запись в JSON
Здраствуйте. Никак не могу догнать. как мне Дописать сто нибуть в JSON фаил? или как изменить данные записанные а JSON?

запись данных в json
Есть форма. С нее получаем данные POST'ом. Эти данные записываем в json файл. Проблема: кириллица ни в какую не хочет записываться. Дамп...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru