1

所以我有一个表单,可以通过其 ID(自动递增列(主键))从数据库中获取数据,并<input>通过值属性显示标签中的所有字段。当我提交表单时,如果 ID 列中的 ID 不存在,我希望它插入一个新行,如果它存在,我想用相同的 ID 更新行中的其余数据。

我一直在尝试对此进行研究,但似乎没有人在做我想做的事情,它总是略有不同。我找到了一个 REPLACE INTO 并创建了它,如下所示:

$sqlString = 'REPLACE INTO coursework
SET cwID=`'. $cwID .'`,
cwTitle=`'. $cwTitle .'`,
cwContent=`'. $cwContent .'`,
cwProgress=`'. $cwProgress .'`,
cwDue=`'. $cwDue .'`;

所有 $cw[] 变量都是从 $_POST 方法接收的内容。

我不断收到错误代码:1054-'字段列表'中的未知列'6'-“未知列'6'”是mysql试图调用$cwID($_POST ['cwID']的值)而不是cwID列(这是我的表的主键)。我觉得我缺少一些简单而愚蠢的东西,但我以前从未使用过这种 REPLACE INTO 方法。

我看到了一个帖子INSERT IGNORE INTOINSERT ... ON DUPLICATE KEY UPDATE但是这两个听起来都比我要找的更具破坏性。

我只想确保如果 cwID 存在并且自动增量保持不变,则更新表,或者如果没有 ID,则添加新行。我应该只运行一个 SELECT 查询来查看它是否存在并适当地插入/更新吗?

4

2 回答 2

3

删除用单引号 (') 替换围绕字符串的反引号 (`)。

MySql 正在尝试查找由您用作值的字符串命名的列。

http://dev.mysql.com/doc/refman/5.5/en/identifiers.html

于 2012-04-18T04:11:15.257 回答
1

用单引号替换反引号:

$sqlString = 
 "REPLACE INTO coursework SET cwID='$cwID', cwTitle='$cwTitle', cwContent='$cwContent', cwProgress='$cwProgress', cwDue='$cwDue'";

另外,请注意这"将插入您的变量。

于 2012-04-18T04:14:57.667 回答