Когда я регистрирую свою форму, я получаю эту ошибку. Любая помощь будет большой.
Ошибка:
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or
T_NUM_STRING in /home/u378761662/public_html/action.php on line 3
Мой PHP:
<?php
$con=mysqli_connect("myhost.com","user","password","db");
$sql="INSERT INTO users values ($_POST["username"], $_POST["pwd"], $_POST["email"])";
if (mysqli_query($con,$sql)) {
echo "User added!";
}
Мой HTML:
<form action="action.php" method="post">
Username<input type="text" name="username">
<p>
Password<input type="password" name="pwd">
<p>
Email<input type="text" name="Email">
<p>
<input type="submit" name="Sign Up" value="Sign Up">
</form>
Вы должны разработать привычку использовать параметры запроса для динамических значений, которые вы хотите включить в SQL-запросы. Это помогает избежать путаницы в отношении котировок и помогает избежать уязвимостей безопасности.
Это тоже легко!
$sql="INSERT INTO users values (?, ?, ?)";
if ($stmt = mysqli_prepare($con,$sql)) {
mysqli_stmt_bind_param($stmt, "sss",
$_POST["username"], $_POST["pwd"], $_POST["Email"]);
if (mysqli_stmt_execute($stmt)) {
echo "User added!";
}
}
Предупреждение: вы все еще уязвимы для SQL-инъекций. Ознакомьтесь с ответом Билла Карвина для решения вашей проблемы, а также для того, чтобы не подвергать себя воздействию таких типов атак.
Как говорится в ошибке, проверьте строку 3, ваши котировки не соответствуют друг другу:
$sql="INSERT INTO users values (" . $_POST["username"] . ", " . $_POST["pwd"] . ", " . $_POST["email"] . ")";
Это проблема цитирования:
$sql="INSERT INTO users values ($_POST['username'], $_POST['pwd'], $_POST['email'])";
Оригинал "
вызывал ошибки парсера. Кроме того, как отмечает @JohnConde, это" широко открыта для SQL-инъекций ".