Вывести значение поля, если в другом нашлось соответствие с заданной переменной

Dooko

Новичок
Здравствуйте. Подскажите, пожалуйста, как реализовать данную "идею": идет запрос в базу данных и проверяются все значения поля unic1 в таблице users,если одно из значений совпадает с $_SESSION['ID64'] ( или с каким-либо другим значением/переменной), то выводится поле balance из строки с совпадающим значением unic1.
Надеюсь написал понятно.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Напиши как пробовал делать. Какое значение, какого поля должно совпадать? Тут все твои "идеи" решаются одним SQL запросом на выборку.

Запрос будет примерно такого вида
SELECT нужное поле FROM table WHERE field2=...
 

Dooko

Новичок
Напиши как пробовал делать. Какое значение, какого поля должно совпадать? Тут все твои "идеи" решаются одним SQL запросом на выборку.

Запрос будет примерно такого вида
SELECT нужное поле FROM table WHERE field2=...
Так как я совсем еще новичок в php,то я не смог понять с чего начать это делать. :(
"Какое значение, какого поля должно совпадать?" - это я уже,вроде,выше написал. :rolleyes:
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну, если новичок, то берем книгу по php и читаем. Далее по мере освоения материала, придет понимание того, как написать запрос и как его послать в mysql на исполнение и получить ответ.

Задача в общем виде будет разделена на части.
1. Написать запрос
2. Соединиться с БД и послать туда запрос
3. Получить данные и вывести
 

Dooko

Новичок
Ну, если новичок, то берем книгу по php и читаем. Далее по мере освоения материала, придет понимание того, как написать запрос и как его послать в mysql на исполнение и получить ответ.

Задача в общем виде будет разделена на части.
1. Написать запрос
2. Соединиться с БД и послать туда запрос
3. Получить данные и вывести
Хорошо, спасибо за ответ. :)
Не подскажите какую-нибудь хорошую книжку по php? :)
И нужны знания только php для этого? Или еще и про mysql надо будет читать? :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Dooko, возьми Котерова, любой самоучитель, который не из серии "ПОХАПЕ за 24 часа"

PS: про мускуль ты как раз поверхностно узнаешь из нормальной книги по php. Просто в твоей задаче SQL мало нужен, надо понимать как данные получить и вывести.
 

Dooko

Новичок
Dooko, возьми Котерова, любой самоучитель, который не из серии "ПОХАПЕ за 24 часа"

PS: про мускуль ты как раз поверхностно узнаешь из нормальной книги по php. Просто в твоей задаче SQL мало нужен, надо понимать как данные получить и вывести.
Окей, еще раз спасибо. :)
 

Dooko

Новичок
Dooko, возьми Котерова, любой самоучитель, который не из серии "ПОХАПЕ за 24 часа"

PS: про мускуль ты как раз поверхностно узнаешь из нормальной книги по php. Просто в твоей задаче SQL мало нужен, надо понимать как данные получить и вывести.
Почитал документацию и прочее, и вот,что написал.
PHP:
$q = mysql_query('SELECT `balance` FROM `users` WHERE `unic1` = "'.(int)$_SESSION['ID64'].'"');
$l = mysql_fetch_assoc($q);
echo $l;
Но ничего не выводит. Так же пробовал так:
PHP:
$q = mysql_query('SELECT `balance` FROM `users` WHERE `unic1` = '.(int)$_SESSION['ID64'].'"');
while ($row = mysql_fetch_assoc($q)) {
    echo $row["balance"];
}
Но эффект тот же. Где косячу?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Dooko, надо понимать то, что ты пишешь. Во-первых, что лежит в $_SESSION['ID64']? Целое число или какая-то последовательность букв-цифр?
Во-вторых, когда ты пишешь запрос и не уверен в том, что у тебя не так - надо заниматься отладкой. Как? Берешь и выводишь свой запрос на страницу, то есть пишешь:

PHP:
echo 'SELECT `balance` FROM `users` WHERE `unic1` = "'.(int)$_SESSION['ID64'].'"';
Открываешь исходник страницы и смотришь на результат. Далее копируешь результат в консоль mysql или в phpMyAdmin и выполняешь там (либо в любой другой инструмент работы с БД на свой вкус.)

Далее приходит осознание того, что ты сделал не так, либо (int) там лишний, либо у тебя просто нет соответствия в таблице. Пробуй сделать, пиши что вышло.
 

Dooko

Новичок
Dooko, надо понимать то, что ты пишешь. Во-первых, что лежит в $_SESSION['ID64']? Целое число или какая-то последовательность букв-цифр?
Во-вторых, когда ты пишешь запрос и не уверен в том, что у тебя не так - надо заниматься отладкой. Как? Берешь и выводишь свой запрос на страницу, то есть пишешь:

PHP:
echo 'SELECT `balance` FROM `users` WHERE `unic1` = "'.(int)$_SESSION['ID64'].'"';
Открываешь исходник страницы и смотришь на результат. Далее копируешь результат в консоль mysql или в phpMyAdmin и выполняешь там (либо в любой другой инструмент работы с БД на свой вкус.)

Далее приходит осознание того, что ты сделал не так, либо (int) там лишний, либо у тебя просто нет соответствия в таблице. Пробуй сделать, пиши что вышло.
(int) действительно был лишним. Соответствие есть, теперь через while выводится число,которое мне нужно,но после него какие-то символы: "п»ї". Загуглил и узнал,что это можно убрать через "UTF-8 без BOM". Проверил у себя,и оказалось,что у меня и так стоит данная кодировка.
 

Dooko

Новичок
(int) действительно был лишним. Соответствие есть, теперь через while выводится число,которое мне нужно,но после него какие-то символы: "п»ї". Загуглил и узнал,что это можно убрать через "UTF-8 без BOM". Проверил у себя,и оказалось,что у меня и так стоит данная кодировка.
Избавился от нее через:
PHP:
header('Content-type: text/html; charset=utf-8');
Хорошее ли это решение? Или есть что-то лучше?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Dooko, документ надо сохранять изначально без Byte Order Mark. Не надо там никаких заголовков. Почему у тебя там выводится что-то не так - выясни уж сам давай.

Что касается лишнего (int)... Могу дополнить ответы выше советом использовать подготовленные выражения, их поддерживают PDO/mysqli драйверы. Сейчас тебе придется обрамлять строковые переменные в sql запросе через mysql_real_escape_string(), дабы избежать дальнейшей возможной попоболи.
 

Dooko

Новичок
Dooko, документ надо сохранять изначально без Byte Order Mark. Не надо там никаких заголовков. Почему у тебя там выводится что-то не так - выясни уж сам давай.

Что касается лишнего (int)... Могу дополнить ответы выше советом использовать подготовленные выражения, их поддерживают PDO/mysqli драйверы. Сейчас тебе придется обрамлять строковые переменные в sql запросе через mysql_real_escape_string(), дабы избежать дальнейшей возможной попоболи.
Спасибо Вам большое за помощь,и за то,что не послали куда подальше,как некоторые. :rolleyes:
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Да не за что, книгу почитай нормальную, там все это рассказывается.
 
Сверху