возникли проблемы с отображением результата SELECT sql - PullRequest
0 голосов
/ 06 февраля 2019

я пытаюсь получить идентификатор, который gmail = $ gmail, и использовать его для таблицы ОБНОВЛЕНИЙ

, но я не могу использовать из-за ошибки id и showin Неопределенное свойство: mysqli_result :: $ fetch_assoc

функция addverificationcode ($ gmail, $ random) {

    $connection = mysqli_connect(DataBaseManager::HOST, DataBaseManager::USER, DataBaseManager::PASSWORD, DataBaseManager::DATABASENAME);
    mysqli_set_charset($connection, "utf8");
    $sqlQuery = "SELECT id FROM users WHERE gmail='$gmail'";
    $result = mysqli_query($connection, $sqlQuery);
    if ($result->num_rows > 0) {
            $sqlCommand = "UPDATE users
                      SET verificationcode  = '$random' 
                        WHERE id = $result->fetch_assoc()";
    }

    if(mysqli_query($connection, $sqlCommand)){
        return true;
    }else{
        echo("Error description: " . mysqli_error($connection));
        return false;
    }


    }

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

fetch_assoc дает вам массив записи :) попробуйте этот код

 if ($result->num_rows > 0) {
   while($res = mysqli_fetch_array($result)){
            $id = $res['id'];     // you are breaking the array here and storing the array index in a new variable
            $sqlCommand = "UPDATE users
                      SET verificationcode  = '$random' 
                        WHERE id = $id";
       }
    }

, теперь он будет работать.удачи :) 1004 *

0 голосов
/ 06 февраля 2019

Вы должны использовать фигурные скобки при вызове метода в объекте:

        $sqlCommand = "UPDATE users
                  SET verificationcode  = '$random' 
                    WHERE id = {$result->fetch_assoc()}";

Альтернативой является использование конкатенации:

        $sqlCommand = "UPDATE users
                  SET verificationcode  = '$random' 
                    WHERE id = " . $result->fetch_assoc();

Обратите внимание, что вВ этом случае вы можете объединить два оператора SQL в один, например, update .. where id = (select id from ...).

Также обратите внимание, что ваш код, опубликованный, уязвим для атаки SQL-инъекцией.См. Как я могу предотвратить внедрение SQL в PHP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...