Как сделать SQL запрос к базе данных

1 234 5
S2
На сайте с 12.06.2011
Offline
112
#21
totamon #:
самое простое получить из базы  поле  xfields разобрать в массив переменных, заменить нужную переменную poster, собрать обратно xfields и обновить в базе.
Спасибо за ответ, на словах оно понятно, но как написать сам синтаксис правильно. дело в том, что я не силен в этом.


S2
На сайте с 12.06.2011
Offline
112
#22
sotex2 #:
Спасибо за ответ, на словах оно понятно, но как написать сам синтаксис правильно. дело в том, что я не силен в этом.


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


$xfields_row_obj = $db->query("SELECT xfields FROM dle_post WHERE id='id='{$_POST['id']}'");

$xfields_row = $xfields_row_obj->fetch_assoc();

$splited_xfields = explode('|', $xfields_row['xfields']);

$splited_xfields[0] = $_POST['poster']; // для poster. он первый, поэтому от нуля

$updated_xfields = implode('|', $splited_xfields);

$poster = $db->query("UPDATE dle_post SET xfields=$updated_xfields WHERE id='$_POST['id']'");


W1
На сайте с 22.01.2021
Offline
286
#23
sotex2 #:
какая то синтаксическая ошибка в коде

Синтаксическая ошибка в коде PHP приводит к серверной ошибке, и в этом случае не работает весь скрипт.

Мой форум - https://webinfo.guru –Там я всегда на связи
W1
На сайте с 22.01.2021
Offline
286
#24
sotex2 #:
Мне предоставили код ниже и уверяли, что должен работать

Не должен этот код работать.

W1
На сайте с 22.01.2021
Offline
286
#25
Rakshein #:

по какой причине он не должен работать, ответь более развернуто

По причине своей неправильности. Отвечать более развёрнуто нет смысла, потому что специалист сам увидит, что там не так, а неспециалисту рассказывать бесполезно.

Давай так: в этом коде как минимум 3 неправильности. Попробуй их найти - это будет нечто вроде квеста, так интереснее.

P.S.  И чего это я вдруг решил ответить хрумаку?..

S2
На сайте с 12.06.2011
Offline
112
#26
webinfo #:

По причине своей неправильности. Отвечать более развёрнуто нет смысла, потому что специалист сам увидит, что там не так, а неспециалисту рассказывать бесполезно.

Давай так: в этом коде как минимум 3 неправильности. Попробуй их найти - это будет нечто вроде квеста, так интереснее.

да уж я с этим квестом 2 сутки маюсь.

код ниже сейчас работает, но только после перезаписи открываю в браузере код ctrl + u в перезаписанной новости и там в мета тегах перечисляются все доп. поля, которые были заполнены в новости. скрин приложил, там цифры на бум были прописаны для теста. как можно поправить код?


$xfields_row_obj = $db->query("SELECT xfields FROM dle_post WHERE id='{$_POST['id']}'");

$xfields_row = $xfields_row_obj->fetch_assoc();

$splited_xfields = explode('|', $xfields_row['xfields']);

$splited_xfields[1] = $_POST['poster']; // для poster. он первый, поэтому от нуля

$updated_xfields = implode('|', $splited_xfields);

$poster = $db->query("UPDATE dle_post SET xfields='{$updated_xfields}' WHERE id='{$_POST['id']}'");


jpg dwftx.jpg
totamon
На сайте с 12.05.2007
Offline
437
#27

у вас там в xfields несколько полей кроме poster? тогда так попробуйте

$xfields_row_obj = $db->query("SELECT xfields FROM dle_post WHERE id='{$_POST['id']}'");

$xfields_row = $xfields_row_obj->fetch_assoc();

$splited_xfields = explode('||', $xfields_row['xfields']);

$splited_xfields_poster = explode('|', $splited_xfields[0]);

$splited_xfields_poster[1] = $_POST['poster']; // для poster. он первый, поэтому от нуля

$splited_xfields[0] = implode('|', $splited_xfields_poster);
$updated_xfields = implode('||', $splited_xfields);

$poster = $db->query("UPDATE dle_post SET xfields='{$updated_xfields}' WHERE id='{$_POST['id']}'");
Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
W1
На сайте с 22.01.2021
Offline
286
#28
totamon #:
тогда так попробуйте

Несмотря на то, что ТС так и не ответил на мой вопрос по структуре поля xfields (наверное, исходя из каких-то своих принципов), рискну всё-таки отметить, что по моим сведениям, разделителем между дополнительными полями является запятая.
И да, нельзя полагаться на то, что дополнительное поле poster есть в каждом посте. Его там может и не быть. И тогда вы влепите poster вместо другого дополнительного поля, первого по порядку.

S2
На сайте с 12.06.2011
Offline
112
#29
webinfo #:

Несмотря на то, что ТС так и не ответил на мой вопрос по структуре поля xfields (наверное, исходя из каких-то своих принципов), рискну всё-таки отметить, что по моим сведениям, разделителем между дополнительными полями является запятая.
И да, нельзя полагаться на то, что дополнительное поле poster есть в каждом посте. Его там может и не быть. И тогда вы влепите poster вместо другого дополнительного поля, первого по порядку.

у каждой новости постер и без постера никак не получиться сделать новость. вопрос решен уже, где писал, что после перезаписи в мета тегах выводятся доп. поля. это потому что не было текста в новости и брались значения из доп.полей.
totamon
На сайте с 12.05.2007
Offline
437
#30
webinfo #:
разделителем между дополнительными полями является запятая.

хз, не люблю дле и не работаю с ней, но есть пара рабочих сайтов, просто посмотрел в базе и у меня поля разделяются || а название и значение |

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

1 234 5

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий