当我在我的表单上注册时,我收到此错误。任何帮助都会很棒。
错误:
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>
答案 0 :(得分:3)
您应养成将查询参数用于要包含在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!";
}
}
答案 1 :(得分:0)
这是一个引用问题:
$sql="INSERT INTO users values ($_POST['username'], $_POST['pwd'], $_POST['email'])";
原始"
导致解析器错误。此外,正如@JohnConde所指出的那样,这是“对SQL injections开放的。”
答案 2 :(得分:0)
警告:您仍然容易受SQL Injection攻击。查看Bill Karwin对您的问题的解决方案的答案,以及防止您受到这些类型攻击的影响。
如错误所示,请查看第3行,引号错误:
$sql="INSERT INTO users values (" . $_POST["username"] . ", " . $_POST["pwd"] . ", " . $_POST["email"] . ")";