php脚本没有连接到MySQL数据库

时间:2014-05-30 09:31:45

标签: php mysql

我有一个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);
?>

1 个答案:

答案 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,你最好坚持使用单引号。