Когда я пытаюсь использовать переменную для моего WHERE в SQL PHP, это не работает - PullRequest
0 голосов
/ 03 марта 2020

Это сегмент моего кода, где я пытаюсь редактировать запись, используя WHERE. Когда я ввожу идентификационный номер вручную, он редактирует запись и сообщает, что запись успешно обновлена. Когда я использую переменную, взятую с предыдущей страницы, запись говорит, что запись успешно обновлена, но не меняет мою запись.

Это работает, когда я вручную добавляю идентификатор для редактирования

// Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }

            $student_ID = $_GET{'student_ID'};

            $sql =  "UPDATE student_info_2020 SET student_first_name = '$student_first_name', student_last_name = '$student_last_name', student_username = '$student_username',student_password = '$student_password',
            student_program = '$student_program', student_portfolio = '$student_portfolio', student_linkedin = '$student_linkedin', student_secondary = '$student_secondary', student_hometown = '$student_hometown',
            student_career_goals = '$student_career_goals', student_hobbies = '$student_hobbies', student_state = '$student_state' WHERE student_ID = 2";


        if ($conn->query($sql) === TRUE) {
            echo "Record updated successfully";
        } else {
            echo "Error updating record: " . $conn->error;
        }

    $conn->close();

Когда я пытаюсь использовать переменную для моего предложения WHERE, она не работает. Я повторил $ ​​student_ID, и он получил правильное число, равное двум, но не редактировал запись 2. Он также сообщает, что запись была успешно обновлена, но этого не произошло, поэтому я запутался.

// Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }

            $student_ID = $_GET{'student_ID'};

            $sql =  "UPDATE student_info_2020 SET student_first_name = '$student_first_name', student_last_name = '$student_last_name', student_username = '$student_username',student_password = '$student_password',
            student_program = '$student_program', student_portfolio = '$student_portfolio', student_linkedin = '$student_linkedin', student_secondary = '$student_secondary', student_hometown = '$student_hometown',
            student_career_goals = '$student_career_goals', student_hobbies = '$student_hobbies', student_state = '$student_state' WHERE student_ID = '$student_ID'";


        if ($conn->query($sql) === TRUE) {
            echo "Record updated successfully";
        } else {
            echo "Error updating record: " . $conn->error;
        }

    $conn->close();

1 Ответ

0 голосов
/ 03 марта 2020

Используйте [ и ] для получения значения из массива $_GET:

$student_ID = $_GET['student_ID'];

Попробуйте использовать sprintf

$sql =  sprintf("UPDATE student_info_2020 SET student_first_name = '$student_first_name', student_last_name = '$student_last_name', student_username = '$student_username',student_password = '$student_password',
        student_program = '$student_program', student_portfolio = '$student_portfolio', student_linkedin = '$student_linkedin', student_secondary = '$student_secondary', student_hometown = '$student_hometown',
        student_career_goals = '$student_career_goals', student_hobbies = '$student_hobbies', student_state = '$student_state' WHERE student_ID = %d",(int)$student_ID);
...