我有一个php" verifyconect.php"我与服务器连接的脚本。当我填写表单页面时,它意味着将数据写入MySQL数据库,但它不会这样做。我还将主机名更改为" localhost"虽然这是在网络上托管。我输入了与我的FTP软件一起使用的服务器主机名,但没有发生任何变化。请问我出错了什么。
verifyconect.php
<?php
$link = mysql_connect ("hostname", "###", "###");
mysql_select_db ("dbtable", $link);
?>
VerifyLogin.php
<?php
include("verifyconect.php");
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$confirm_password = $_POST['confirm_password'];
$insert = 'INSERT INTO verifytable (username, email, password, confirm_password) VALUES ("'.$username.'", "'.$email.'", "'.$password.'", "'.$confirm_password.'")';
mysql_query($insert);
?>
答案 0 :(得分:0)
您正在切换单引号和双引号。
假设
username = john
email = john@example.com
password = hell0w0rld
confirm = hell0w0rld
然后查询将是:
INSERT INTO verifytable (username, email, password, confirm_password) VALUES ("john", "john@example.com", "hell0world", "hell0w0rld")
在SQL查询中使用双引号会出现语法错误。要在SQL查询中使用文字值,必须使用单引号。
因此,如果您使用$insert
变量将该行重写为以下内容:
$insert = "INSERT INTO verifytable (`username`, `email`, `password`, `confirm_password`) VALUES ('".$username."', '".$email."', '".$password."', '".$confirm_password."')";
你会很好。
另请注意,我用反引号包围了SQL表的列名,因此如果使用关键字(如password
)作为列名,则不会出现语法错误。
似乎在某些情况下使用双引号将(文字)值插入到SQL表中,有时也会起作用。但是,根据this answer,你最好坚持使用单引号。