Среда, 25 Декабря 2024, 16:07

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
PHP MySQL запрос UPDATE
romeo98Дата: Среда, 30 Июля 2014, 18:01 | Сообщение # 1
участник
Сейчас нет на сайте
Пытаюсь заменить в БД значение столбца player (varchar), в той строчке, где id=1. Не работает. Подключился я к БД правильно, т.к. я могу поменять соседний столбец bestScore (int).
Вот код:

Код

$serverid = 1;
$player = 'ADawd';
mysql_query("UPDATE `не важно` SET `player`=$player WHERE id=$serverid");


Помогите пожалуйста...


Flist - social platform
PuzzleSystem - Open-source Unity Asset
[2D] Mission: Defender


Сообщение отредактировал romeo98 - Среда, 30 Июля 2014, 18:02
FolleahДата: Среда, 30 Июля 2014, 18:26 | Сообщение # 2
Архитектор
Сейчас нет на сайте
Дело в столбце, в PMA поройся.



Сообщение отредактировал Folleah - Среда, 30 Июля 2014, 18:27
WikkeДата: Среда, 30 Июля 2014, 18:36 | Сообщение # 3
частый гость
Сейчас нет на сайте
вот так должно работать

Цитата

mysql_query("UPDATE `не важно` SET `player`='".$player."' WHERE id=".$serverid.";");


А вообще это не безопасно, дико и неправильно.
Читайте про PHP MySQLi и подготовленные выражения ( Prepared Statement ) а то у вас тут потенциальный SQL Injection.


C++ forever :3

Сообщение отредактировал Wikke - Среда, 30 Июля 2014, 18:37
FolleahДата: Среда, 30 Июля 2014, 18:45 | Сообщение # 4
Архитектор
Сейчас нет на сайте
Wikke, извиняюсь, что это за censored? И при чем тут MySqli? Вы вообще на PHP работали?
Защита от инъекции:
Код
$serverid = mysql_escape_string('1');
$player = mysql_escape_string('ADawd');
mysql_query("UPDATE `не важно` SET `player`='$player' WHERE `id`='$serverid'");     




Сообщение отредактировал Folleah - Среда, 30 Июля 2014, 18:48
WikkeДата: Среда, 30 Июля 2014, 18:53 | Сообщение # 5
частый гость
Сейчас нет на сайте
ШТА? Вы не знаете что такое mysqli? И утверждаете мне что я не работал с php. О боже мой. А ну ка быстро в гугл! Не позорьтесь!

Добавлено (30.07.2014, 18:53)
---------------------------------------------
Цитата
Защита от инъекции:
Код
$serverid = mysql_escape_string('1');
$player = mysql_escape_string('ADawd');
mysql_query("UPDATE `не важно` SET `player`='$player' WHERE `id`='$serverid'");

Это по вашему защита от иньекций?
Вы серьезно?
Да тут дыра размером с ... такое сравнение здесь запрещено :C player - varchar и что мне помешает передать строку

Цитата
$player = "'; DROP TABLE `не важно`; --";


И получиться запрос
Цитата
UPDATE `не важно` SET `player`=''; DROP TABLE `не важно`; -- WHERE `id`='$serverid'


Упс и у вас нету таблицы потому что мой код, переданный вам, исполниться на стороне MySQL и кирдык вашей базе.

Подготовленные выражения делают защиту от иньекций гораздо чище и быстрее, чем какие - то классы и свистульки.


C++ forever :3

Сообщение отредактировал Wikke - Среда, 30 Июля 2014, 18:54
FolleahДата: Среда, 30 Июля 2014, 18:57 | Сообщение # 6
Архитектор
Сейчас нет на сайте
Я знаю и использовал mysqli, но в данный момент работаю с фреймворком и вкрученным ActiveRecord. Мб это и не надежная защита, но защита smile

WikkeДата: Среда, 30 Июля 2014, 19:00 | Сообщение # 7
частый гость
Сейчас нет на сайте
Просто mysql интерфейс устарел. Это факт.
Его не рекомендуется использовать. А подготовленные выражения дают множество преимуществ ( и об этом писали на хабре, и я сам это ощутил ).

Как минимум однотипные запросы выполняются гораздо быстрее ( и это относится не только к MySQL )


C++ forever :3
FolleahДата: Среда, 30 Июля 2014, 19:02 | Сообщение # 8
Архитектор
Сейчас нет на сайте
Я не знаю всех тонкостей работы с БД. Ибо перешел на клиент smile

last2424Дата: Среда, 30 Июля 2014, 20:46 | Сообщение # 9
30 мл. блоков
Сейчас нет на сайте
Код
mysql_query("UPDATE 'не важно' SET 'player'='".$player."' WHERE 'id'=".$serverid.";")

Может так? biggrin


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
WikkeДата: Среда, 30 Июля 2014, 20:57 | Сообщение # 10
частый гость
Сейчас нет на сайте
Цитата
mysql_query("UPDATE 'не важно' SET 'player'='".$player."' WHERE 'id'=".$serverid.";")

Может так? biggrin

oh ... у вас проблемы с SQL.


C++ forever :3
last2424Дата: Среда, 30 Июля 2014, 21:00 | Сообщение # 11
30 мл. блоков
Сейчас нет на сайте
Wikke, в смысле проблемы, от 'переменная' ничего не случится. biggrin Это проверено.

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Среда, 30 Июля 2014, 21:01
WikkeДата: Среда, 30 Июля 2014, 21:07 | Сообщение # 12
частый гость
Сейчас нет на сайте
Цитата
Wikke, в смысле проблемы, от 'переменная' ничего не случится. biggrin Это проверено.

Я только что прогнал ваш запрос и получил ошибку smile
MySQL 5.6


C++ forever :3
last2424Дата: Среда, 30 Июля 2014, 21:09 | Сообщение # 13
30 мл. блоков
Сейчас нет на сайте
Wikke, а ты базу указал? Переменные указал? У меня Mysql 5.5.

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Среда, 30 Июля 2014, 21:10
WikkeДата: Среда, 30 Июля 2014, 21:16 | Сообщение # 14
частый гость
Сейчас нет на сайте
Вот :

Код
UPDATE 'users' SET 'user_nickname'='test' WHERE 'user_id'=1;


И это ошибочный sql, но сделанный по твоему шаблону

Цитата
"UPDATE 'не важно' SET 'player'='".$player."' WHERE 'id'=".$serverid.";"


C++ forever :3
last2424Дата: Среда, 30 Июля 2014, 21:26 | Сообщение # 15
30 мл. блоков
Сейчас нет на сайте
Цитата
"UPDATE не важно SET player=".$player." WHERE id=".$serverid.";"

Тогда так.
P.S. а разве точка с запятой там должна стоять?


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Среда, 30 Июля 2014, 21:27
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг