Php MySQL语法错误

Php MySQL语法错误,php,mysql,Php,Mysql,我收到这个错误: 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 接近发布(项目id、开始日期、结束日期、预计速度、, 在第1行发布标题“)” 我的PHP文件: <?php include("../db_connect/connect.php"); $project_id = $_POST['project_id']; $release_title = $_POST['release_id']; $start_date = $_POST['start

我收到这个错误:

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 接近发布(项目id、开始日期、结束日期、预计速度、, 在第1行发布标题“)”

我的PHP文件:

<?php

include("../db_connect/connect.php");

$project_id = $_POST['project_id'];
$release_title = $_POST['release_id'];
$start_date = $_POST['start_date'];
$end_date = $_POST['end_date'];
$predicted_velocity = $_POST['predicted_velocity'];

$query = "INSERT INTO release (project_id, start_date, end_date, predicted_velocity, release_title,  ) VALUES ('" . $predicted_velocity . "','" . $release_title . "','" . $start_date . "','" . $end_date . "','" . $project_id . "', NOW())";
mysql_query($query) or die(mysql_error());

header("location: ../view-project.php?project_id=$project_id");

?>

缺少列名,导致孤立的逗号

,  )
应该是

, MyColumn)
我假设
MyColumn
是由
NOW()
函数填充的

此外,您的值未按列的顺序列出,这将导致查询失败

总结一下这里的问题:

  • 缺少列名(列计数必须与值计数匹配)
  • 挂逗号
  • 列顺序与变量顺序不匹配
  • 代码会受到攻击
  • 没有对用户输入进行服务器端验证
  • 额外逗号:

     [..snip..]  predicted_velocity, release_title,  ) VALUES
                                                  ^--- here
    

    您在
    release\u title

    @john\u allen之后有一个逗号。您说您收到了错误消息“在“release(project\u id)”附近使用正确的语法”-这很有趣,因为MySQL总是在语法错误发生的地方启动示例

    如果错误只是发布标题后不正确的逗号,那么来自MySQL的错误应该是“使用near')值的正确语法…”。这是一个错误,但不是MySQL解析器首先遇到的错误


    这里还有一些问题,我认为这是因为您没有一个名为“release”的表,或者至少MySQL无法使用您提供的凭据找到名为“release”的表。检查您的连接字符串。

    删除发布后的最后一个逗号\u title,漂亮的sql注入孔。修复SQL语法错误后,最好学习如何强化代码。如果不知道$\u POST变量的内容,我们将无法帮助您,您能否回显$query。另外,在构建sql查询之前,请对变量进行一些验证!还值得注意的是,列顺序与值顺序不匹配。