Неполадка в MySQL запросе.

Тема в разделе "PHP", создана пользователем imedia, 30 мар 2012.

Статус темы:
Закрыта.
Модераторы: latteo
  1. imedia

    imedia Создатель

    Регистр.:
    22 фев 2012
    Сообщения:
    28
    Симпатии:
    0
    Делаю скрипт платежной системы не могу реализовать проверку баланса
    PHP:
    $custombalance mysql_query("SELECT 'login', 'balance' FROM 'users' WHERE ;");
    Надо смотреть баланс по логину:
    PHP:
    $custombalance mysql_query("SELECT 'login', 'balance' FROM 'users' WHERE login='$login';");
    Дмал так пойдет, но не идет...

    С MySQL я на Вы еще пока, что.
    Помогите пожалуйста.
     
  2. imedia

    imedia Создатель

    Регистр.:
    22 фев 2012
    Сообщения:
    28
    Симпатии:
    0
    С этим сам разобрался а с этим как?
    PHP:
    $price $_POST['price'];
    $custombalance mysql_query("SELECT balance FROM users WHERE login='$login';");
    $balance $custombalance $price;
    $sql "UPDATE users SET `balance` = \'$balance\' WHERE `users`.`login` = \'$login\' LIMIT 1;";
    А здесь что не так?
     
  3. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    для начала синтаксис у вас ни в п... ни в красную армию....
    PHP:
    $price $_POST['price'];
    $custombalance mysql_query("SELECT balance FROM users WHERE `login`='".$login."';");
    $balance $custombalance $price;
    $sql "UPDATE users SET `balance` = '".$balance."' WHERE `login` = '".$login."'";
    название таблицы и лимит не нужны, по логике вещей поле login должно быть уникальным!
    кроме того, скрипт можно сократить убрав лишнее действие:
    PHP:
    $price $_POST['price'];
    $custombalance mysql_query("SELECT balance FROM users WHERE `login`='".$login."';");
    if(
    $custombalance>=$price){
    $sql "UPDATE users SET `balance` = `balance`-'"$price ."' WHERE `login` = '".$login."'";}
     
  4. DrakonHaSh

    DrakonHaSh

    Регистр.:
    29 июн 2010
    Сообщения:
    358
    Симпатии:
    122
    по правилам хорошего тома в подобных ситуациях надо приводить текст ошибки.

    по поводу запроса:
    зачем \'$balance\' ? хватит просто $balance (он же у вас цифровой)
    \'$login\' - опять хрень. надо просто '$login'
    LIMIT 1; - это пожалуй лишнее
     
  5. imedia

    imedia Создатель

    Регистр.:
    22 фев 2012
    Сообщения:
    28
    Симпатии:
    0
    Так Вот:
    PHP:
    $custombalance mysql_query("SELECT balance FROM users WHERE `login`='".$login."';");
    if(
    $custombalance>=$price){
    $sql "UPDATE users SET `balance` = `balance`-'"$price ."' WHERE `login` = '".$login."'";
    mysql_query($sql);}
     
  6. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Так работает или нет???
     
  7. CnecHa3

    CnecHa3 Постоялец

    Регистр.:
    10 фев 2007
    Сообщения:
    105
    Симпатии:
    20
    Если смотреть на первые посты, тут как минимум потенциальная sql-инъекции

    PHP:
    $price $_POST['price'];
    $custombalance mysql_query("SELECT balance FROM users WHERE `login`='".$login."';");
    if(
    $custombalance>=$price){
    $sql "UPDATE users SET `balance` = `balance`-'"$price ."' WHERE `login` = '".$login."'";
    }
    Подставлю я вместо price " '; DELETE FROM users WHERE 1 = '1 " и выйдет
    SELECT balance FROM users WHERE `login`=''; DELETE FROM users WHERE 1 = '1';

    Думаю, о результатах запрос говорить не надо!:)
     
  8. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    imedia
    Снова заказ на 100500$ !?
    Помнится была темка даже коммент не потерли :D
    А на счет того что с mysql проблемы так вы маны почитайте... Иначе так и будите постоянно по мелочам на форумах сидеть.

    Да и подумайте немного... Вы разрабатываете систему работающую с деньгами !!! И если у вас столь банальные вопросы то о том как защитить все это у вас и вопроса не появится. ИМХО Брости вы это гиблое дело !
     
  9. imedia

    imedia Создатель

    Регистр.:
    22 фев 2012
    Сообщения:
    28
    Симпатии:
    0
    Dino - нет. Деньги не списывает.

    ---_demon - с защитой все нормально WINDOWS SERVER я нормально администрирую и DEBIAN тоже.
     
  10. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    :eek:

    Я вам говорю для того что бы приготовить амлет нужно уметь жарить яйца!
    А вы мне я умею делать масло и сковородки!

    Либо я чего то в этой жизни не вкуриваю... Или перекуриваю :nezn:
     
Статус темы:
Закрыта.