PHP - MySQL | Лучше / чище, чем это?

0

Есть ли лучший способ сделать эти запросы?

Я вызываю эти функции из другого php, чтобы вернуть данные в приложение Android в JSON. Но я чувствую, что этот код "грязный".

BTW Этот код работает. Но могут ли быть проблемы, если есть много запросов пользователей? Я хочу, чтобы все вещи были быстрыми для тонких вещей. Сейчас около 100 человек используют это приложение. Уже все хорошо. Но как это будет, если их больше?

Спасибо за помощь! Было бы здорово, если бы вы могли дать мне какие-либо предложения за этот грязный маленький код: D

(кстати... не могу поверить, что это работает уже.)

<?php require_once("db_connection.php");?>

<?php
define('TIMEZONE', 'Europe/Paris');
date_default_timezone_set(TIMEZONE);

    function storeUser($email, $password, $uuid, $name){
        global $connection;
        $date = date("Y-m-d H:i:s");

        $query = "SELECT * FROM treuepass_users_all WHERE email ='{$email}'";
            $res = mysqli_query($connection, $query);
            $num = mysqli_num_rows($res);
            if ($num == 0)
            {
        $query = "SELECT * FROM treuepass_users_all WHERE uuid ='{$uuid}'";
            $res = mysqli_query($connection, $query);
            $num = mysqli_num_rows($res);
            if ($num > 0)
            {
                $query2 = "UPDATE treuepass_users_all SET email = '{$email}', password = '{$password}', name = '{$name}'  WHERE uuid ='{$uuid}'";
                $res2 = mysqli_query($connection, $query2);
                return $res2;
                mysqli_close($connection);
            }  
                else   //////Wenn sich HANDY das erste mal anmeldet
                $query = "INSERT INTO treuepass_users_all (uuid, dateofregister, email, password, name) VALUES ('{$uuid}', '{$date}', '{$email}', '{$password}', '{$name}')"; 
                $res = mysqli_query($connection, $query);
                $query2 = "UPDATE treuepass_users_all SET lastlogin = '{$date}', logincounter = logincounter +1 WHERE uuid ='{$uuid}'";
                $res2 = mysqli_query($connection, $query2);
                return $res2;
                mysqli_close($connection);
            }else{
                return false;
            }
    }


    function getUserByUsernameAndPassword($email, $password, $uuid){
        $date = date("Y-m-d H:i:s");
        global $connection;

        $query1 = "UPDATE treuepass_users_all SET uuid = '{$uuid}', lastlogin = '{$date}', logincounter = logincounter +1  WHERE email = '{$email}' AND password = '{$password}'";
        $user1 = mysqli_query($connection, $query1);

        $query2 = "SELECT * FROM treuepass_users_all WHERE email = '{$email}' AND password = '{$password}'";
        $user2 = mysqli_query($connection, $query2);

        if($user2){
            while ($res = mysqli_fetch_assoc($user2)){
                return $res;
            }
        }
        else{
            return false;
        }
        mysqli_close($connection);
    }


    function getUserByUUID($uuid){
        global $connection;
        //////Wenn UUID bereits Vorhanden
        $date = date("Y-m-d H:i:s");

        $query2 = "UPDATE treuepass_users_all SET lastlogin = '{$date}', logincounter = logincounter +1 WHERE uuid ='{$uuid}'";
        $res2 = mysqli_query($connection, $query2);

        $query = "SELECT * FROM treuepass_users_all WHERE uuid ='{$uuid}'";
            $res = mysqli_query($connection, $query);
            $num = mysqli_num_rows($res);
            if ($num > 0)
            {
                while ($dsatz = mysqli_fetch_assoc($res))
                return $dsatz;
                mysqli_close($connection);
            }  
                else   //////Wenn sich HANDY das erste mal anmeldet
                $query = "INSERT INTO treuepass_users_all (uuid, dateofregister, lastlogin, logincounter) VALUES ('{$uuid}', '{$date}', '{$date}', '1')"; 
                $res = mysqli_query($connection, $query);
                $query3 = "SELECT * FROM treuepass_users_all WHERE uuid ='{$uuid}'";
                $res3 = mysqli_query($connection, $query3);
                if($res3){
                    while ($res = mysqli_fetch_assoc($res3)){
                        return $res;
                    }
                }
                else{
                    return false;
            }
                mysqli_close($connection);
        }


    function getUpdateUserDataLocation($locationid, $id, $stampcard1counter, $stampcard1stampsnow, $stampcard1redeemed, $stampcard2counter, $stampcard2stampsnow, $stampcard2redeemed, $stampcard3counter, $stampcard3stampsnow, $stampcard3redeemed, $vouchercounter, $vouchernow, $voucherredeemed){
        global $connection;
        $date = date("Y-m-d H:i:s");


        $locationtable5 = "treuepass_history_$locationid";
        $query5 = "INSERT INTO $locationtable5 (uuid, date, time, stampcard1counter, stampcard1redeemed, stampcard2counter, stampcard2redeemed, stampcard3counter, stampcard3redeemed, voucherredeemed)
                   VALUES ('$id', '$date', '$date', '$stampcard1counter','$stampcard1redeemed', '$stampcard2counter','$stampcard2redeemed', '$stampcard3counter','$stampcard3redeemed', '$voucherredeemed')"; 
        mysqli_query($connection, $query5);


        $locationtable = "treuepass_users_$locationid";
        $query3 = "UPDATE $locationtable 
                        SET
                        stampcard1counter = stampcard1counter+'{$stampcard1counter}', stampcard1stampsnow = '{$stampcard1stampsnow}', stampcard1redeemed = stampcard1redeemed+'{$stampcard1redeemed}',
                        stampcard2counter = stampcard2counter+'{$stampcard2counter}', stampcard2stampsnow = '{$stampcard2stampsnow}', stampcard2redeemed = stampcard2redeemed+'{$stampcard2redeemed}',
                        stampcard3counter = stampcard3counter+'{$stampcard3counter}', stampcard3stampsnow = '{$stampcard3stampsnow}', stampcard3redeemed = stampcard3redeemed+'{$stampcard3redeemed}',
                        vouchercounter = vouchercounter+'{$vouchercounter}', vouchernow = '{$vouchernow}', voucherredeemed = voucherredeemed+'{$voucherredeemed}'
                        WHERE uuid ='{$id}'";
        $res3 = mysqli_query($connection, $query3);


        $query = "SELECT * FROM $locationtable WHERE uuid ='{$id}'";
            $res = mysqli_query($connection, $query);
            $num = mysqli_num_rows($res);
            if ($num > 0)
            {
                while ($dsatz = mysqli_fetch_assoc($res))
                return $dsatz;
                mysqli_close($connection);

            }          ////////////////////////////////////////////
                else   // Wenn sich HANDY das erste mal anmeldet // 
                $query = "INSERT INTO $locationtable (uuid, stampcard1counter, stampcard1stampsnow, stampcard1redeemed, stampcard2counter, stampcard2stampsnow, stampcard2redeemed, stampcard3counter, stampcard3stampsnow, stampcard3redeemed, vouchercounter,                                          vouchernow, voucherredeemed)
                          VALUES ('$id', '$stampcard1counter','$stampcard1stampsnow','$stampcard1redeemed', '$stampcard2counter','$stampcard2stampsnow','$stampcard2redeemed', '$stampcard3counter','$stampcard3stampsnow','$stampcard3redeemed',
                          '$vouchercounter','$vouchernow','$voucherredeemed')"; 

                mysqli_query($connection, $query);
                mysqli_close($connection);
    }

    function getUsersLocationStampcard($userid, $locationid){
        global $connection;
            $locationtable = "treuepass_users_$locationid";

            $query = "SELECT * FROM $locationtable WHERE uuid ='{$userid}'";
                $res = mysqli_query($connection, $query);
                if($res){
                    while ($response = mysqli_fetch_assoc($res)){
                        return $response;
                    }
                }
                else{
                    return false;
            }
                mysqli_close($connection);
    }   
?>

Спасибо, что посмотрели через это!

  • 4
    О да, определенно
  • 0
    Почти (я говорю почти, поскольку я не проверил весь код) ВСЕ ваши двойные запросы к одной и той же таблице могут быть выполнены как один запрос
Показать ещё 11 комментариев
Теги:

1 ответ

0

Спасибо за все комментарии! Я целый день переписываю свой код xD

Но теперь я получаю все, что ты мне сказал. - Я сделал это с подключением внутри php - у меня только 1 php для всего этого сейчас - Password Hashing с 'password_hash()' - Готовые Statemants для MySQLi

Вот некоторые фрагменты:

    //////////////////////////////////////////////////STORE USER
if (isset($_POST['uuid']) && isset($_POST['email']) && isset($_POST['password']) && isset($_POST['name'])) {

        $sql = "SELECT * FROM treuepass_users_all WHERE email = ?";
        $stmt = $mysqli->prepare($sql);
        $stmt->bind_param("s", $_POST['email']);
        $stmt->execute();
        $result = $stmt->get_result();
        if($result->num_rows == 1)
        {
            $response["error"] = TRUE;
            $response["error_msg"] = "E-Mail Adresse bereits registriert!";
            echo json_encode($response);
            exit;
        }else{

        $sql = "INSERT INTO treuepass_users_all (uuid, dateofregister, email, password, name, lastlogin, logincounter) VALUES (?, ?, ?, ?, ?, ?, ?)
                ON DUPLICATE KEY UPDATE email=?, password=?, name=?, lastlogin=?, logincounter=logincounter +1";
        $stmt = $mysqli->prepare($sql);
        $one = "1";
        $hash = password_hash($_POST['password'], PASSWORD_DEFAULT);
        $stmt->bind_param("sssssssssss", $_POST['uuid'], $date, $_POST['email'], $hash, $_POST['name'], $date, $one,     $_POST['email'], $hash, $_POST['name'], $date);
        $stmt->execute();

        $sql = "SELECT * FROM treuepass_users_all WHERE uuid = ?";
        $stmt = $mysqli->prepare($sql);
        $stmt->bind_param("s", $_POST['uuid']);
        $stmt->execute();
        $result = $stmt->get_result();

        while ($row = $result->fetch_assoc())
        {
        $response["error"] = FALSE;
        $response["user"]["id"] = $row['id'];
        $response["user"]["uuid"] = $row['uuid'];
        $response["user"]["locked"] = $row['locked'];
        $response["user"]["dateofregister"] = $row['dateofregister'];
        $response["user"]["email"] = $row['email'];
        $response["user"]["username"] = $row['username'];
        $response["user"]["name"] = $row['name'];
        $response["user"]["surname"] = $row['surname'];
        $response["user"]["dayofbirth"] = $row['dayofbirth'];
        $response["user"]["monthofbirth"] = $row['monthofbirth'];
        $response["user"]["yearofbirth"] = $row['yearofbirth'];
        $response["user"]["gender"] = $row['gender'];
        $response["user"]["lastlogin"] = $row['lastlogin'];
        $response["user"]["logincounter"] = $row['logincounter'];
        echo json_encode($response);
        }
    }
}

Надеюсь, я сделал это хорошо? :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню