【问题标题】:SQL syntax error - insert into statementSQL 语法错误 - 插入语句
【发布时间】:2014-05-25 19:23:49
【问题描述】:

大家下午好。运行以下 INSERT INTO 语句时出现以下错误。

错误:您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 在第 2 行的 ' , , , , , , , , , )' 附近

我完全被难住了。这可能与我在表中名为“id”的增量值有关吗?这是代码。非常感谢提前!

<?php
$con=mysqli_connect("localhost","root","root","wexdemo");

if (mysqli_connect_errno())
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}


$name = mysqli_real_escape_string($_POST['name']);
$address = mysqli_real_escape_string($_POST['address']);
$area = mysqli_real_escape_string($_POST['area']);
$postcode = mysqli_real_escape_string($_POST['postcode']);
$sector = mysqli_real_escape_string($_POST['sector']);
$subsector = mysqli_real_escape_string($_POST['subsector']);
$contact = mysqli_real_escape_string($_POST['contact']);
$position = mysqli_real_escape_string($_POST['position']);
$email = mysqli_real_escape_string($_POST['email']);
$telephone = mysqli_real_escape_string($_POST['telephone']);

$sql="INSERT INTO employers (name, address, area, postcode, sector, subsector, contact, position, email, telephone)
VALUES ($name, $address, $area, $postcode, $sector, $subsector, $contact, $position, $email, $telephone)";

if (!mysqli_query($con,$sql))
{
  die('Error: ' . mysqli_error($con));
}
echo "1 record added";

mysqli_close($con);
?>

【问题讨论】:

  • 总是尝试调试你的代码,你可以简单地打印你的查询并检查正在执行的实际查询是什么
  • 了解prepared statements,真的很聪明!
  • @PhilHowell:如果与mysqli_prepare 合作,那将是最好的

标签: php mysql insert


【解决方案1】:

$sql="INSERT INTO 雇主(姓名、地址、地区、邮政编码、部门、子部门、联系人、职位、电子邮件、电话) 值 (" + "" + $name +"" + ", " + "" + $address +"" + ", " + "" + $area + "" + ", " + ""+ $sector + " " + ", " + ""+ $subsector+ "" + ", " + ""+$contact + "" + ", " + ""+$position +"" + ", " + ""+ $email + "" + ", " + "" + $电话 + "" + ")";

【讨论】:

  • 如果那应该是 PHP 代码:请不要推荐使用这种高度不安全的代码
【解决方案2】:

变量不应包含在“或”中;即使查询已填充并且看起来正确,我也会收到相同的错误 MyError: INSERT INTO dati_modelle VALUES (1, sonia, nota 1, 14, Height, 165, Bust, 60, Waist, 65, Hips, 60, Shoe, 33, Eyes, brown) 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '1, 14, Height, 165, Bust, 60, Waist, 65, Hips, 60, Shoe, 33, Eyes, brown)' 附近使用正确的语法

【讨论】:

    【解决方案3】:

    如果它们的列类型是字符串,您插入的值需要用单引号或双引号括起来。试试这个代码:

    $sql="INSERT INTO employers (name, address, area, postcode, sector, subsector, contact, position, email, telephone)
    VALUES ('$name', '$address', '$area', '$postcode', '$sector', '$subsector', '$contact', '$position', '$email', '$telephone')";
    

    您可能不希望用引号括起来的唯一值是那些具有数值的值 - 即可能是 $postcode$telephone

    【讨论】:

      【解决方案4】:

      插入查询 应包含在' 单引号或"双引号内。

      $sql ="INSERT INTO employers (`name`, `address`, `area`, `postcode`, `sector`, `subsector`, `contact`, `position`, `email`, `telephone`)
       VALUES ('$name', '$address', '$area', '$postcode', '$sector', '$subsector',
             ..^
       '$contact', '$position', '$email', '$telephone')";
      

      而不是

      $sql="INSERT INTO employers (name, address, area, postcode, sector, subsector, contact, position, email, telephone)
      VALUES ($name, $address, $area, $postcode, $sector, $subsector, $contact, $position, $email, $telephone)";
      

      【讨论】:

      • 嗨,Krish,我添加了带走错误消息的单引号,但数据未正确插入表中。自动增量“id”列是每行显示的唯一数据...
      • 你能发布你的表结构吗?
      • @PhilHowell:在调用mysqli_query 之前,使用echo $sql; 进行调试。这可以让您知道是否将正确的数据发送到数据库。
      • @KrishR 我不知道该怎么做。能给个建议吗?
      • 请确保仅在表单提交后运行此代码,因为您使用了值的 POST。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多