0

嘿...所以我尝试运行下面的查询,但它不会这样做。我检查过:

  • 表单中的字段数与表中的字段数相匹配。
  • 会话变量的数量也与这些数字相匹配。
  • 实际查询包含要通过回显输入的数据。
  • 表名正确。
  • 该查询适用于同一数据库中的其他表(它们确实如此)。
  • 使用 or die(mysql_error(); 得到“语法错误”错误。
  • 多次重建表。

这是显然在语法上存在问题的行,如果您发现它有任何问题或指出我正确的方向,我会非常感激,因为我现在不知所措!可能是内存问题?

$sql = "INSERT INTO careBoiler (buyerID, date, sector, require, boilerMake, boilerModel, boilerType, heating, visit, deadline, budget, currcompany, specificreq) VALUES ('{$_SESSION['buyerID']}', now(), '{$_SESSION['cb']['sector']}', '{$_SESSION['cb']['require']}', '{$_SESSION['cb']['boilerMake']}', '{$_SESSION['cb']['boilerModel']}', '{$_SESSION['cb']['boilerType']}', '{$_SESSION['cb']['heating']}', '{$_SESSION['cb']['visit']}', '{$_SESSION['cb']['deadline']}', '{$_SESSION['cb']['budget']}', '{$_SESSION['cb']['currcompany']}', '{$_SESSION['cb']['specificreq']}')";
4

5 回答 5

2

这有点困难,因为您没有提供确切的错误消息。

但是,您可能使用列名“require”,它是 MySQL 中的保留关键字。关键字“日期”也是保留的,但由于它的广泛使用,它是允许的。

尝试更改表和查询中的列名“require”。

在这里查看更多信息;http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

如果不是这样,请提供完整的错误消息。

于 2010-10-22T09:13:59.043 回答
1

作为一般的php/mysql调试策略

  1. 打印出实际查询,并插入值。有时,仅此一项就会使问题变得显而易见。

  2. 如果有,请将查询复制并粘贴到 phpMyAdmin / mysql 工作台中,然后查看它给您的错误消息。如果您无权访问其中任何一个,只需在 php 脚本中调用 mysql_error() 并查看它给您带来的错误。

于 2010-10-22T09:07:38.780 回答
0

看起来require是您用作列名的MySQL 保留字。

要解决此问题,您可以选择不同的列名或将其放在反引号中,如下所示:

$sql = "INSERT INTO careBoiler (buyerID, date, sector, `require`,...
                                                       ^       ^
于 2010-10-22T09:04:39.830 回答
0

尝试使用or die($sql.' - '.mysql_error());它来查看它认为它的处理方式。

于 2010-10-22T09:09:04.877 回答
0

键入字段日期,如“日期”

于 2010-10-22T09:38:17.760 回答