LINUX.ORG.RU

check the manual that corresponds to your MariaDB server version

 , , ,


0

2

Всем доброго времени суток!

Мой мозг уже поехал, спасайте есть есть пара строк в php раз

mysqli_query($con,"UPADTE $DBTABLE SET coins=coins+10 WHERE id='1'") or die(mysqli_error($con));

два

$one = mysqli_query($con,"SELECT * FROM $DBTABLE WHERE id='1'") or die(mysqli_error($con));
echo "one: {$one} <BR>";

Ответы такие: раз

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SET coins=coins+10 WHERE id='1'' at line 1

два

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE id='1'' at line 1

Версия MariaDB 10.3.29 Пробовал с кавычками и без, через переменные

P.S. Еще вопрос вдогонку, есть ли какой либо софт или конструктор для визуализации данных из mySQL?

Ответ на: комментарий от stslit

На всякий случай распечатай всё-таки строку с запросом и посмотри на нее. Сообщение об ошибке выглядит так, как будто переменная пустая. И в первом запросе у тебя UPADTE вместо UPDATE. Опечатка в сообщении?

TeopeTuK ★★★ ()
Ответ на: комментарий от TeopeTuK

Да. Это была опечатка в коде все написано верно) Не совсем понимаю, что значить распечатать. Есть строка (текст), есть результат её работы (вывод ошибки). В phpmyadmin запрос работает на ура. Так же все переменные передаваемые в запросе дублируются на странице. Все данные выводятся корректно.

stslit ()
Ответ на: комментарий от TeopeTuK

Вы правы! В переменной пусто. Собрал запрос в phpmyadmin, вставил в код - работает. Поменял на переменную не работает. Но строка с INSERT работает. Бред какой-то. Может insert работает только потому что таблица одна? Что же делать с переменными?

stslit ()
Ответ на: комментарий от tfeartx

Пробовал и так и так и другими разными значками, точками, кавычками. Даже выходи на улицу проветриться!!! Не работает… #@$%@#$%@#$%

define ('DBHOST', 'localhost');
define ('DBNAME', 'DG_cli');
define ('DBUSER', '***');
define ('DBPASS', '***');

$con = mysqli_connect($DBHOST, $DBUSER , $DBPASS, $DBNAME) or die ('Error connect'. mysqli_error());
mysqli_query("SET NAMES utf8");

$id = ($_GET['id']);
$barcode = ($_GET['barcode']);
$name = ($_GET['name']);
$coin = ($_GET['coin']);

if ($id == '1') {
      mysqli_query($con, "INSERT INTO $DBTABLE (barcode,name,coins) VALUES ('$barcode','$name','$coin')") or die(mysqli_error($con));
}
if ($id == '2') {
     $sql  = 'UPDATE `DG_cli` SET `coins`=`coins`+10 WHERE `id`=1';
     mysqli_query($con,$sql) or die(mysqli_error($con));
}

Вот он весь корявый черной код. Сейчас он работает, но попытки поменять в UPDATE явное указание на переменную выносят мозг.

id: 2
barcode: 123123123
name: Ivan
coins: 50
datetime: 1630866641
db table: DG_cli

Вот что выводиться на странице запроса

stslit ()
Ответ на: комментарий от stslit

но попытки поменять в UPDATE явное указание на переменную выносят мозг.

Ну еще бы.

1. Переменной нет.

2. Запрос UPDATE взят в одинарные кавычки, внутри которых переменные не работают. SELECT при этом взят в двойные кавычки :)

tfeartx ()
Последнее исправление: tfeartx (всего исправлений: 1)
Ответ на: комментарий от tfeartx

Благодетель!!! Все заработало! @tfeartx крепко жму руку!

Последний раз в sql и php лазил году в 2005) Сколько еще впереди граблей! ) Еще бы долго плясал с кавычками %)

stslit ()
Последнее исправление: stslit (всего исправлений: 1)
Ответ на: комментарий от tfeartx

Если не сложно, может есть какая то информация о готовых визуализаторах для mySQl или конструкторах сайтов с возможностью визуализации на локальной машине?

Запользовал metabase.com интересный инструмент, но не совсем то.

stslit ()
Ответ на: комментарий от stslit
$id = ($_GET['id']);
$barcode = ($_GET['barcode']);
$name = ($_GET['name']);
$coin = ($_GET['coin']);

if ($id == '1') {
      mysqli_query($con, "INSERT INTO $DBTABLE (barcode,name,coins) VALUES ('$barcode','$name','$coin')") or die(mysqli_error($con));
}

Ну и зачем ты сделал sql инъекцию? За такое могут руки оторвать и надавать ими по башке.

crutch_master ★★★★★ ()
Последнее исправление: crutch_master (всего исправлений: 2)

Всем доброго времени суток!

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

Известный российский лингвист, доктор филологических наук, профессор М. А. Кронгауз в книге «Русский язык на грани нервного срыва» указывает на то, что в русском языке приветствия не используются в родительном падеже.

время суток

Канцелярит, грубая стилистическая ошибка.

mysqli_query($con,"UPADTE

Ошибка.

есть ли какой либо софт или конструктор для визуализации данных из mySQL?

Datawrapper.

Papant ()
Ответ на: комментарий от Papant

Простите деревенского человека. Такое приветствие пошло с сети FIDOnet. Теперь буду знать.

За ссылку спасибо, но для «поделки на конке» хотелось бы ято то по дешевле. Взял www.metabase.com пока хватает

По поводу опечатки в UPDATE, было выше, опечатка появилась случайно и в коде её не было.

stslit ()
Ответ на: комментарий от stslit

Предлагайте другое решение.

https://www.php.net/manual/ru/ref.pdo-mysql.php

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

Наружу твой код выпускать конечно нельзя.

tfeartx ()
Последнее исправление: tfeartx (всего исправлений: 1)
Ответ на: комментарий от stslit

man mysqli_real_escape_string, хотя бы. Ну а так - банальные проверки на число, где нужно число/проверки строк по регулярке/длине строки/на допустимые значения. Это первое, чему учат в любом пту.

crutch_master ★★★★★ ()
Ответ на: комментарий от crutch_master

mysqli_real_escape_string, хотя бы

Подготовленные запросы.

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

Несколько дополню, переменную $DBTABLE прогонять через белый список.

or die

Не самый хороший вариант, лучше выбрасывать исключение, а потом его отлавливать.

fernandos ★★★ ()
Ответ на: комментарий от tfeartx

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

stslit ()
Ответ на: комментарий от crutch_master

У каждого свои ПУТ, где по проще, где то по сложнее. Уже думал сделать простое шифрование закрытым ключом. Таким образом, в строке будет набор символов однозначно декодируемых на сервере, типа ключа API. Спасибо за направление!

stslit ()