За последние 24 часа нас посетили 23244 программиста и 1699 роботов. Сейчас ищут 1639 программистов ...

Что тут не так?

Тема в разделе "Сделайте за меня", создана пользователем kertel, 28 июл 2016.

  1. kertel

    kertel Новичок

    С нами с:
    28 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    Делаю код отправки денег ... Что тут собственно не так? Извините за кучу ошибок...Учу пых уже дня три!
    PHP:
    1. <?php
    2. include "dbconfig.php";
    3. $id = $_POST['id'];
    4. $a = 0;
    5. $count = $_POST['count'];
    6. $sfdfdf->prepare('UPDATE  VALUES (money = money + $count) WHERE id=2');
    7. $sfdfdf->bindParam(':count', $count);
    8. $sfdfdf->execute();
    9. $gfhhfgh->prepare('UPDATE  VALUES (money = money - $count) WHERE id=1');
    10. $gfhhfgh->bindParam(':count', $count);
    11. $gfhhfgh->execute();
    12.  
    13. ?>
    и собственно dbconfig.php
    PHP:
    1. <?php
    2. class Database
    3. {
    4.     private $host = "localhost";
    5.     private $db_name = "122";
    6.     private $username = "root";
    7.     private $password = "";
    8.     public $conn;
    9.  
    10.     public function dbConnection()
    11.     {
    12.  
    13.         $this->conn = null;
    14.         try
    15.         {
    16.             $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
    17.             $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    18.         }
    19.         catch(PDOException $exception)
    20.         {
    21.             echo "Connection error: " . $exception->getMessage();
    22.         }
    23.      
    24.         return $this->conn;
    25.     }
    26. }
    27. ?>
    P.S. И можете помочь мне сделать определение айди пользователя?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    что в переменной sfdfdf?

    ЗЫ. голову сломаешь такой код читать. Ты сам себя не любишь чтоль?
     
  3. kertel

    kertel Новичок

    С нами с:
    28 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    @Ganzal, я не совсем понял что нужно в переменной
    Я читал что там что-то нужно
    Возможно код подключения бд?
    А так там ничего!
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну так если у тебя в переменной ничего нет то почему ты пытаешься пользоваться методами этого самого ничего нета? пользуешься ты методами стало быть это экземпляр какого-то класса. какого? где инициализация?

    тебе сейчас основы программирования надо изучать и азы пхп. а ты деньги перекидывать собрался...
     
  5. kertel

    kertel Новичок

    С нами с:
    28 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    @Ganzal, ну так я и учусь! Попытаюсь что-то сделать...
    --- Добавлено ---
    @Ganzal
    PHP:
    1. <?php
    2. $conn = new PDO('mysql:host=localhost;dbname=122', "root", "");
    3. $id = $_POST['id'];
    4. $count = $_POST['count'];
    5. $conn->prepare('UPDATE  VALUES (money = money + $count) WHERE id=2');
    6. $conn->bindParam(':count', $count);
    7. $conn->execute();  
    8. $conn->prepare('UPDATE  VALUES (money = money - $count) WHERE id=1');
    9. $conn->bindParam(':count', $count);
    10. $conn->execute();  
    11.  
    12. ?>
    Что можете сказать про такой код?
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну, что ты не читал мануал по пхп. Твое значение переменной $count не подставится в запросы. Там будет именно строка бакс-каунт. Почему? Потому что так работают строки в одинарных кавычках.
     
  7. kertel

    kertel Новичок

    С нами с:
    28 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    @Ganzal
    PHP:
    1. <?php
    2. $fgh = "root";
    3. $huh = "";
    4. $conn = new PDO('mysql:host=localhost;dbname=122', $fgh , $huh);
    5. $id = $_POST['id'];
    6. $count = $_POST['count'];
    7. $conn->prepare('UPDATE  VALUES (money = money + $count) WHERE id=2');
    8. $conn->bindParam('$count', $count);
    9. $conn->execute();  
    10. $conn->prepare('UPDATE  VALUES (money = money - $count) WHERE id=1');
    11. $conn->bindParam('$count', $count);
    12. $conn->execute();  
    13.  
    14. ?>
    так? Пойду-ка я читать мануал по пыху
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    не так. сходи почитай мануал.
     
  9. kertel

    kertel Новичок

    С нами с:
    28 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    @Ganzal уже читаю
    А вы не посоветуете метод как узнать айди пользователя?
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    откуда узнать-то? и для чего?
     
  11. kertel

    kertel Новичок

    С нами с:
    28 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    @Ganzal из бд
    Чтобы у него удалить нужное количество денег
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    проблема-то в чем? не знаешь кто и кому переводит?
     
  13. kertel

    kertel Новичок

    С нами с:
    28 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    @Ganzal $row=select *from users , но потом когда WHERE users_id= $row['users_login'] не срабатывает
     
  14. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Используй mysqli c драйвером mysqlnd (хотя вроде он сейчас по умолчанию стоит), раз ты с mysql'ом работаешь.
    Рекомендую инкапсилировать структуру и реализовывать свою задумку в финальной структуре.
    Раз ты тоже ударился в ООП в php - то делай красиво, реализуй объект унаследованный от mysqli если работаешь непосредственно с MySQL.
    Код весь показывать не стану, ибо все равно работать он у тебя не будет, просто скажу как работает:
    Я для своего удобства, унаследовал класс сделал все необходимые мтоды для работы сбазами и соединениями, переопределил метод query - сделал чтобы передача параметров была в нем и ask аналог.

    PHP:
    1. $db = new db(array(
    2.     'one' => array(
    3.         'host' => 'localhost',
    4.         'user' => 'root',
    5.         'password' => 'password',
    6.         'base' => 'basename',
    7.         'encode' => 'utf8'
    8.     )
    9. ));
    PHP:
    1. $login = filter_input(INPUT_POST, 'login');
    2. $one = $db->connect('one');
    3. $login = $one->query('SELECT * FROM `comments` WHERE `login`=?', array($login));
    4. // ниже аналог, только в качестве запроса используется ключ в файле массиве sql.php, удобнее, короче, - все SQL'ки в одном месте.
    5. //$login = $one->ask('comments', array($login));
    6. while($comment = $login->fetch_assoc()) {
    7.     //....
    8. }
    --- Добавлено ---
    Потому, что нужно оборачивать переменные или выводить их за строку, оператором конкатенации (пристыковки - сложения строк) точка " . "
    Заметьте как работают кавычки
    PHP:
    1. $sql = 'SELECT * FROM `comments` WHERE `login`=$variable';
    переменная $variable так и отправится не выполненной. а вот так:
    PHP:
    1. $sql = 'SELECT * FROM `comments` WHERE `login`= '.$variable;
    но никак нам нужно и не будет обернуто в кавычки содержимое переменной.
    а так будет обернуто в двойные кавычки, так как одинарные используются в определении переменной:
    PHP:
    1. $sql = 'SELECT * FROM `comments` WHERE `login`= "'.$variable.'"';
    А вот, чтобы такого не было, можно воспользоваться в таком случае двойными кавычками в определении строки, а одинарными при структурировании и построении SQL запроса ну и оборачивать переменные в {} - фигурные скобки:
    PHP:
    1. $sql = "SELECT * FROM `comments` WHERE `login`= '{$variable}'";
     
    denis01 нравится это.