Я хочу повторить все имена классов, которые имеют одинаковый идентификатор пользователя в php - PullRequest
0 голосов
/ 06 января 2020

код здесь:

$mysqli = new mysqli($servername, $username, $password, $database);
$userId1 = $_SESSION['user']['userId'];
$searchQuery = "SELECT ClassName FROM classrooms WHERE userid = '{$userId1}'";
echo "abc";
if ($mysqli->query($searchQuery) === TRUE) {
    echo "epic";
    while($row = $searchQuery->fetch_object()) {
        echo $row['ClassName'];
    }
} 

Я пытаюсь повторить все случаи, когда userId в таблице классов соответствует идентификатору сеанса userId. ПОМОГИТЕ.

это таблица, которую мы используем для отслеживания пользовательских классов, которые я использую mysqli.

ClassName  userid
yoink      25
lol        25
haha       6
yoinks     25
yeet       25
yeet1      25

Оказывается, мой пост в основном кодовый. Итак, позвольте мне дать некоторые подробности. Я пытаюсь создать таблицу, которая будет отображать имя класса в зависимости от идентификатора пользователя. Таким образом, у пользователя 25 будут классные комнаты yoink, lol, yoinks, yeet и yeet1. Но оператор if (наш запрос) на самом деле ничего не делает.

Большое спасибо

1 Ответ

1 голос
/ 06 января 2020

$searchQuery это строка !!! И не дескриптор результата, который был бы возвращен из $mysqli->query(), но вы его не захватили.

Поэтому измените код на

$mysqli = new mysqli($servername, $username, $password, $database);
$userId1 = $_SESSION['user']['userId'];
$searchQuery = "SELECT ClassName FROM classrooms WHERE userid = '$userId1'";
echo "abc";
if ($result = $mysqli->query($searchQuery) === TRUE) {
    echo "epic";
    while($row = $result->fetch_object()) {
        //echo $row['ClassName'];
        // you fetch an OBJECT so address it as an object
        echo $row->ClassName;
    }
} 

Однако - Большое предупреждение

Ваш сценарий открыт для SQL Атака инъекцией . Даже если если вы экранируете входные данные, это небезопасно! Вам следует рассмотреть возможность использования подготовленных параметризованных операторов в API MYSQLI_ или PDO вместо объединенных значений

$mysqli = new mysqli($servername, $username, $password, $database);
$userId1 = $_SESSION['user']['userId'];

$sql = "SELECT ClassName FROM classrooms WHERE userid = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('s', $userId1);
$stmt->execute();
$result = $stmt->get_result();
while($row = $result->fetch_object()) {
    echo $row->ClassName;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...