| 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. Мб это и не надежная защита, но защита   
 
   |  |  |  |  | 
| 
| Wikke | Дата: Среда, 30 Июля 2014, 19:00 | Сообщение # 7 |  |   частый гость Сейчас нет на сайте | Просто mysql интерфейс устарел. Это факт. Его не рекомендуется использовать. А подготовленные выражения дают множество преимуществ ( и об этом писали на хабре, и я сам это ощутил ).
 
 Как минимум однотипные запросы выполняются гораздо быстрее ( и это относится не только к MySQL )
 
 C++ forever :3
 |  |  |  |  | 
| 
| Folleah | Дата: Среда, 30 Июля 2014, 19:02 | Сообщение # 8 |  |   Архитектор Сейчас нет на сайте | Я не знаю всех тонкостей работы с БД. Ибо перешел на клиент   
 
   |  |  |  |  | 
| 
| last2424 | Дата: Среда, 30 Июля 2014, 20:46 | Сообщение # 9 |  |   30 мл. блоков Сейчас нет на сайте | Код mysql_query("UPDATE 'не важно' SET 'player'='".$player."' WHERE 'id'=".$serverid.";")Может так?
   
 Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.
 (нет) |  |  |  |  | 
| 
| 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, в смысле проблемы, от 'переменная' ничего не случится.  Это проверено. 
 Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.
 (нет)
 
 Сообщение отредактировал last2424 - Среда, 30 Июля 2014, 21:01 |  |  |  |  | 
| 
| Wikke | Дата: Среда, 30 Июля 2014, 21:07 | Сообщение # 12 |  |   частый гость Сейчас нет на сайте | Цитата Wikke, в смысле проблемы, от 'переменная' ничего не случится. biggrin Это проверено. Я только что прогнал ваш запрос и получил ошибку
   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 |  |  |  |  |