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?


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

Название таблицы. Оно много где используется и не вызывает нареканий. Замена на прямой название ничего не меняет.

define ('DBTABLE', 'DG_cli');
stslit
() автор топика
Ответ на: комментарий от stslit

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

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

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

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

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

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

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

PHP Notice: Undefined variable: DBTABLE

tfeartx
()
Ответ на: комментарий от 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

Вот он весь корявый черной код.

В нем нет DBTABLE ни как переменной, ни как константы.

tfeartx
()
Ответ на: комментарий от 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)
Ответ на: комментарий от crutch_master

Предлагайте другое решение. Буду рад изучить что то интересное. Для примера на коленке мне такого хватает, но понимаю, что так не дается. Жду рекомендаций.

stslit
() автор топика

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

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

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

время суток

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

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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.