错误在哪里?(MYSQL)

错误在哪里?(MYSQL),mysql,Mysql,我在这里有点不知所措。我试图将此表单提交到MYSQL服务器(托管在我的计算机上),但它不断抛出以下错误: 错误:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“”附近要使用的正确语法 有没有人愿意看一看,看看你是否能发现错误 以下是我的SQL代码: <?php //Establish value variables $firstName=$_POST['firstName']; $lastName=$_POST['lastName']; $email=$_P

我在这里有点不知所措。我试图将此表单提交到MYSQL服务器(托管在我的计算机上),但它不断抛出以下错误:

错误:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“”附近要使用的正确语法

有没有人愿意看一看,看看你是否能发现错误

以下是我的SQL代码:

<?php

//Establish value variables
$firstName=$_POST['firstName']; 
$lastName=$_POST['lastName']; 
$email=$_POST['email']; 
$phone=$_POST['phone']; 
$address=$_POST['address']; 
$zipcode=$_POST['zipcode']; 
$state=$_POST['state']; 
$city=$_POST['city']; 
$petname=$_POST['petname']; 
$petType=""; 
$neut="";
 if(isset($_POST['neut'])){ $neut = $_POST['neut']; }
 if (isset($_POST['petType'])){$petType = $_POST['petType']; }

//establish connection
$con = mysql_connect("localhost","root","pwdpwd");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("pet_shop", $con);

//initializing the $error variable + array holding errors
$error = array ();
if (empty($firstName)) { $error[]='You forgot to enter your first name!'; }
if (empty($lastName)) { $error[]='You forgot to enter your last name!'; }
if (empty($email)) { $error[]='You forgot to enter your email!'; }
if (empty($phone)) { $error[]='You forgot to enter your phone number!'; }
if (empty($address)) { $error[]='You forgot to enter your address!'; }
if (empty($city)) { $error[]='You forgot to enter your city!'; }
if (empty($state)) { $error[]='You forgot to enter your state!'; }
if (empty($petname)) { $error[]='You forgot to enter your pet name!'; }


if(!empty($error))
{
die(implode('<br />', $error)); //stops script and prints errors    
}

if(!$error) {

//Insert information into columns
$sql="INSERT INTO grooming (firstName, lastName, email, phonenumber, address, zip, state, city, petname, PetType, NeuteredOrSpayed)";
}

//enter into if everything is okay
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error($con));
  }
  else 
    {
echo "<span>Appointment added!</span>"; 
}


//close connection
mysql_close($con);

?>
</body>
<br />
<a href="grooming.php"><button class="backButtn" id="backButtn">Back</button></a>
</html>



注:“petType”是指一组单选按钮,“neut”是一个复选框。

您忘记设置值了

$sql="INSERT INTO <tableName> (columnNames) VALUES (valuesHere)
$sql=“插入(列名称)值(valuesHere)

您忘记设置值了

$sql="INSERT INTO <tableName> (columnNames) VALUES (valuesHere)
$sql=“插入(列名称)值(valuesHere)
基本语法是:

INSERT INTO table_name (col_name, ...)
VALUES (...)
您的查询必须如下所示:

$sql = "INSERT INTO grooming (firstName, lastName, email, phonenumber, address, zip, state, city, petname, PetType, NeuteredOrSpayed) VALUES ('$firstname', '$lastname', '$email', '$phone', '$address', '$zipcode', '$state', '$city', '$petname', '$pettype', '$neut')";
如果为表中的每一列提供值,则可以忽略列列表:

$sql = "INSERT INTO grooming VALUES ('$firstname', '$lastname', '$email', '$phone', '$address', '$zipcode', '$state', '$city', '$petname', '$pettype', '$neut')";
注意:与问题无关,但是,您的查询容易受到攻击。

基本语法是:

INSERT INTO table_name (col_name, ...)
VALUES (...)
您的查询必须如下所示:

$sql = "INSERT INTO grooming (firstName, lastName, email, phonenumber, address, zip, state, city, petname, PetType, NeuteredOrSpayed) VALUES ('$firstname', '$lastname', '$email', '$phone', '$address', '$zipcode', '$state', '$city', '$petname', '$pettype', '$neut')";
如果为表中的每一列提供值,则可以忽略列列表:

$sql = "INSERT INTO grooming VALUES ('$firstname', '$lastname', '$email', '$phone', '$address', '$zipcode', '$state', '$city', '$petname', '$pettype', '$neut')";

注意:与问题无关,但是,您的查询容易受到攻击。

您的语句缺少values子句,因为下面的两个答复已经解决。您的语句缺少values子句,因为下面的两个答复已经解决。我不太确定是否可以省略列名。但是如果列名可以省略,我认为默认的是所有列。也许这就是OP想要做的?所以语法应该是
插入到tablename值(……)
?是的,您是正确的。可以忽略列名,如果值列表中提供了每个列名的值。+1则您最好将其添加到答案中。它也将帮助其他人,并希望对OP有所帮助。我在值中添加了一个新的(但很熟悉!)错误:“错误:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,在第3行的“123 hello st”、“12345”、“NY”、“NYC”、“eddie”、“dog”、“on”)附近使用正确的语法。”我还没有实现任何正则表达式,除了添加的值语法外,上述代码没有任何变化,如下所示:
值(“$firstName”、“$lastName”、“$email”、“$phone”、$address”、“$zipcode”、“$state”、“$city”、“$petname”、“$petType”、“$neut”)";
您在
$phone
之后缺少了一个
。我不太确定是否可以省略列名。但是如果列名可以省略,我认为默认的是所有列。也许这就是OP想要做的?所以语法应该是
插入到tablename值(……)
?是的,您是正确的。可以忽略列名,如果值列表中提供了每个列名的值。+1则您最好将其添加到答案中。它也将帮助其他人,并希望对OP有所帮助。我在值中添加了一个新的(但很熟悉!)错误:“错误:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,在第3行的“123 hello st”、“12345”、“NY”、“NYC”、“eddie”、“dog”、“on”)附近使用正确的语法。”我还没有实现任何正则表达式,除了添加的值语法外,上述代码没有任何变化,如下所示:
值(“$firstName”、“$lastName”、“$email”、“$phone”、$address”、“$zipcode”、“$state”、“$city”、“$petname”、“$petType”、“$neut”)";
您在
$phone
之后缺少一个
'