当我提交表单以在我的网站上注册一个新用户时,它提交,但它没有提交到数据库,我收到一个错误说:
查询无效:SQL语法中存在错误; 检查与MySQL服务器版本对应的手册,以便在第2行的"####,800800800"附近使用正确的语法.整个查询:mysql_query
这是我的MySQL查询:
$fname = $_POST['fnamein'];
$lname = $_POST['lnamein'];
$email = $_POST['emailin'];
$phone = $_POST['phonein'];
$password = sha1($_POST['passwordin']);
$query='INSERT INTO directoryi (Fname, Lname, password, email, phone)
VALUES ('.$fname.', '.$lname.', '.$password.', '.$email.', '.$phone.')';
$result = mysql_query($query);
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . mysql_query;
die($message);
}
echo '<h2>Thank you for registering!</h2>';
mysql_free_result($result);
mysql_close($dbconnect);
?>
Run Code Online (Sandbox Code Playgroud)
我的HTML表单:
<form action="register.php" method='post'>
<input type="text" class="input-small" style="width: 46%;" name="fnamein" placeholder="First Name">
<input type="text" class="input-small" style="width: 46%;" name="lnamein" placeholder="Last Name">
<input type="text" class="input" style="width: 46%;" name="emailin" placeholder="Email">
<input type="text" class="input" style="width: 46%;" name="phonein" placeholder="ex. 7171234567">
<input type="password" class="input" style="width: 96%;" name="passwordin" placeholder="Password">
<button type="submit" class="btn">Register</button>
</form>
Run Code Online (Sandbox Code Playgroud)
要直接回答您的问题,字符串文字必须用单引号括起来,
$query="INSERT INTO directoryi (Fname, Lname, password, email, phone)
VALUES ('" .$fname. "', '" .$lname. "', '".$password."', '".$email."', '".$phone."')";
Run Code Online (Sandbox Code Playgroud)
作为一个旁注,查询是脆弱的SQL Injection,如果值(小号变量)从外面走了进来.请查看下面的文章,了解如何防止它.通过使用,PreparedStatements您可以摆脱使用值周围的单引号.