无法将表单提交到数据库

时间:2012-02-15 07:55:28

标签: php mysql html wordpress

我正在使用WordPress,我在管理部分制作了一个表单。我试图将它提交到另一个数据库(而不是默认的wp),所以我成功切换数据库并执行插入查询,但我一直收到错误。

这是我的代码:

$selected = mysql_select_db( 'petracms', $serverAccess );
if (!$selected) {
    die ('Can\'t use foo : ' . mysql_error());
}
$query = "INSERT INTO `petra_customers` (`FirstName`, `LastName`, `Email`, `Phone`) VALUES ($fName, $lName, $email, $phone)";
$result = mysql_query($query);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

我一直收到这个错误:

  

查询无效:您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在第1行“@ gmail.com,5859475566”附近使用正确的语法

这是我的输入:(Adam, Page, bofumme@gmail.com, 5859475566)

我不知道我做错了什么

2 个答案:

答案 0 :(得分:1)

INSERT语句中的值必须用引号括起来(“数字”除外):

INSERT INTO `foo` (`a`,`b`,`c`) VALUES("foo","bar",1)

这是你(安全地)构造一个用于查询字符串插值的变量的方法(不过这是不赞成的):

$email = sprintf('"%s"', mysql_real_escape_string($_POST['email']));
$query = "INSERT INTO `foo` (`email`) VALUES($email)";

更优雅的方式(也更安全)是使用预准备语句(示例使用PDO):

# Prepare the statement
$sth = $dbh->prepare('INSERT INTO `foo` (`email`) VALUES(:email)');

# Substitute placeholders in query and execute it
$sth->execute(array(
    'email' => $_POST['email']
));

答案 1 :(得分:0)

我猜您忘记在'查询中添加引号INSERT。查看网上有关如何进行简单插入的任何教程,例如:http://www.w3schools.com/php/php_mysql_insert.asp