В настоящее время я занимаюсь разработкой простого сайта php / mysql.
Мне нужно обновить столбец char в таблице, передав переменную php. Проблема в том, что я не знаю, как передать переменную в виде строки.
$verify = $_POST['verification'];
"UPDATE Users SET account_status=1 WHERE verification_code= . $verify . ";
Выше запрос не работает для меня. Выполнение запроса вручную на MySQL работает;
UPDATE Users SET account_status=1 WHERE verification_code="XYz12"
поэтому я думаю, что проблема заключается в передаче переменной в виде строки. Я попробовал пару разных вещей, но не смог справиться …
"UPDATE Users SET account_status=1 WHERE verification_code='" . $verify . "'";
Но, конечно, это очень плохая форма. Вы должны убедиться, что ваша переменная правильно экранирована. Я рекомендую использовать подготовленные заявления PDO:
$stmt = $db->prepare("UPDATE Users SET account_status=1 WHERE verification_code=?");
$stmt->execute(array($verify));
поле valid_code является строкой, это должно быть между простой кавычкой, например:
$query = "UPDATE Users SET account_status=1 WHERE verification_code='$verify'";
Правильная строка для запроса выглядит следующим образом:
$query = "UPDATE Users SET account_status=1 WHERE verification_code=\"" . $verify . "\"";
С \ char вы выбираете кавычки. В любом случае это может быть довольно запутанным, поэтому вы можете использовать простые цитаты.
$query = "UPDATE Users SET account_status=1 WHERE verification_code='$verify'";
Обратите внимание, что вы можете сделать ссылку на переменную php в кавычках, как указано выше.
КСТАТИ. Ваша ошибка в том, что вы используете символы конкатенации внутри строки. Это следует использовать как мой первый пример. В любом случае вам нужно заключить в кавычки значение SQL, если это строка. Вам не нужно делать это, если поле НЕ является строкой.
Если вас беспокоит SQL-инъекция, вы можете использовать подготовленные операторы вместо простых запросов. Я рекомендую вам ЗОП Класс PHP. Вы можете попробовать MySQLi тоже.