MySQL语法错误

时间:2012-03-22 18:39:33

标签: php mysql

我得到这个错误:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   'release(project_id,start_date,end_date,predict_velocity,   release_title,)'在第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");

?>

任何想法为什么?我是新来的!

4 个答案:

答案 0 :(得分:1)

您的列名称丢失,导致出现孤立的逗号。

,  )

应该是

, MyColumn)

我认为MyColumn意图由NOW()函数填充。

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

总结这里的问题:

  1. 缺少列名(列数必须与值计数匹配)
  2. 悬挂逗号
  3. 列顺序与变量顺序不匹配
  4. 代码受SQL injection攻击
  5. 没有对用户输入进行服务器端验证

答案 1 :(得分:0)

额外的逗号:

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

答案 2 :(得分:0)

release_title之后你有一个迷路逗号。

答案 3 :(得分:0)

@john_allen你说你收到错误消息“正确的语法在'release(project_id,')附近使用 - 这很有趣,因为MySQL总是启动语法错误发生的例子。

如果错误是只是在release_title之后的错误逗号,那么来自MySQL的错误将是“使用附近的正确语法”)VALUES ......“。这是一个错误,但不是MySQL解析器首先遇到的错误。

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