|
|
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
Привет, пишу на PHP + MySQL, помогите с запросом. Что имеем на входе: Таблица MySQL: UIN Ref EDAF4 2 EDAF4 1 EDAF4 3 PDE45 1 Цель - получить из БД одну строку, по значению UIN, с минимальным значением Ref. После выдачи строки скриптом PHP - удалить ее из БД. В нашем примере результатом запроса будет строка "EDAF4 | 1" и последующее ее удаление из БД. Моих познаний хватило чтобы написать следующее, но при выдаче пустой строки - выдает непонятную ошибку и отбора строки с минимальным значением из столбца Ref - НЕТ! как и удаления. Если в запрос передать несуществующее значение UIN выдает следующее: Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 2 in /home/public_html/1.php on line 25 --MySQL--Select---Output---Begin------SQL--peremennaja---mysql_result---begin-----SQL--peremennaja---mysql_result---end--- Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2014, 21:36:45 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
manager5555, Код: php 1. 2. 3. 4. 5. 6. 7. НО! 1. используйте mysqli! 2. "!mysql_query('SELECT COMMAND FROM commands WHERE UIN="'.$UIN.'"')" так делать нельзя отучите себя от этого; 3. mysql_result не самая лучшая функция ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2014, 21:52:05 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
помимо прочего для кого писали и переводили документация :( https://php.net/manual/en/function.mysql-result.php ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2014, 21:53:42 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
спасибо, как определить пустую строку - заработало. Оказывается помимо запросов SELECT и INSERT есть много полезных функций. Прочитать про них можно здесь - http://php.net/manual/ru/ref.mysql.php . а как сделать выборку из полученных 3 строк с одинаковым значением UIN - одну строку с наименьшим значением Ref ? Какую конструкцию использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 12:13:44 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
Nick , что в этой строке не так 2. "!mysql_query('SELECT COMMAND FROM commands WHERE UIN="'.$UIN.'"')" так делать нельзя отучите себя от этого; - работает же . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 13:09:14 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
Отвечаю на вопрос который задавал - SELECT COMMAND, MIN(REF) FROM commands WHERE UIN="EDAF4" - выдаст 1 строку с совпадением по UIN и минимальным значением REF. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 13:27:33 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
Странно, но функция mysql_num_rows($result) возвращает 1 даже если мы вводим несуществующий UIN. В конструкторе запросов показывает строку с содержимым NULL. Опять возник вопрос определения пустой строки. Фактически строка пустая , а mysql_num_rows($result) выдает 1??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 13:44:29 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
manager5555Отвечаю на вопрос который задавал - SELECT COMMAND, MIN(REF) FROM commands WHERE UIN="EDAF4" - выдаст 1 строку с совпадением по UIN и минимальным значением REF.Неверно. Выдаст одну запись (не путайте со строками). В которой в первом поле будет значение поля COMMAND из любой записи таблицы, которой удовлетворяет условие UIN="EDAF4". А во втором поле будет минимальное значение поля REF. И эти значения вполне могут быть взяты из разных записей. Если записей, которые удовлетворяют условие UIN="EDAF4", нет, то результатом будет одна запись с NULL обоих полях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 14:11:30 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
miksoft, так и получилось - выдает запись со значением NULL если UIN ввели неправильный(в БД такого нет). Решил проверкой на значение NULL. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Выделено то что еще не отладил и пока не работает... DELETE miksoft, правильно ли я понял, что сейчас мой запрос может выдать значение UIN из одной строки, значение REF из другой строки таблицы? Если да то меня такой вариант не устраивает - переделывать буду. В чем ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 14:52:00 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
manager5555miksoft, правильно ли я понял, что сейчас мой запрос может выдать значение UIN из одной строки, значение REF из другой строки таблицы?именно так, об этом я говорил выше. Нужно примерно так: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 16:05:58 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
miksoftmanager5555miksoft, правильно ли я понял, что сейчас мой запрос может выдать значение UIN из одной строки, значение REF из другой строки таблицы?именно так, об этом я говорил выше. Нужно примерно так: Код: sql 1. Супер, работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 16:23:32 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
Вот результат: Выборка из таблицы по одному полю и минимальному значению второго поля. С определением пустой выдачи и удалением записи после выдачи. Проверил - работает. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Благодарю за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2014, 02:43:25 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
manager5555 Код: php 1. 1. так делать нельзя потому что sql injection , используйте параметры и mysqli 2. "mysql_" фунции не рекомендованы к применению разработчиками PHP почему у них написано, дело ваше конечно ;). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2014, 10:13:07 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
Nickolay, спасибо за совет. Про инжекшн помню. Но защита от него на последнем месте, - когда будет готов функционал программы. Подскажите способы защиты от SQL injection? Что значит параметры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2014, 23:16:01 |
|
||
|
Простой вопрос PHP + MySQL
|
|||
|---|---|---|---|
|
#18+
manager5555Nickolay, спасибо за совет. Про инжекшн помню. Но защита от него на последнем месте, - когда будет готов функционал программы. Подскажите способы защиты от SQL injection? Что значит параметры? как бы это сказать, защиту потом не притянешь за уши, лучше сразу :) думаю вам вот это почитать: http://php.net/manual/ru/mysqli-stmt.bind-param.php в принципе проблема, в кратце, в том что вы просто собираете строку запроса из каких-то переменных, при этом поначалу вы можете вполне всё контролировать, но со временем кода становится много и начинаются проблемы ( а сам PHP как язык этому ещё и сильно способствует ). На самом деле использование параметров конечно не избавляет от проблемы полностью ( никто не мешает потом неудачно считать данные из базы, и сделать с ними что-то не то) но в большинстве случаев этого достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2014, 23:57:50 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38844449&tid=1833750]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
114ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 440ms |

| 0 / 0 |
