在MySQL中,我向表中添加了一个新列...
ALTER TABLE `articles` ADD `visible` NOT NULL DEFAULT (1)
我使用默认值1表示新文章可见,如果文章被禁用,它将更新为0表示无法查看。
现在在新文章中插入而不是MySQL插入默认值1,而是在某些行和1个其他行上插入0。
我想知道导致此问题的原因以及此问题的可能解决方案,而不必手动将这些行更新为1。
例如,插入是......
INSERT INTO articles (filename, owner, name, descr, image1, image2, category, added, info_hash, size, numfiles, save_as, news, external, nfo, lang, anon,tube, last_action) VALUES (".sqlesc($fname).", '".$CURUSER['id']."', ".sqlesc($name).", ".sqlesc($descr).", '".$inames[0]."', '".$inames[1]."', '".$catid."', '" . get_date_time() . "', '".$infohash."', '".$articlesize."', '".$filecount."', ".sqlesc($fname).", '".$news."', '".$external."', '".$nfo."', '".$langid."','$anon', ".sqlesc($tube).",'".get_date_time()."')");
然后我尝试将其更新为
INSERT INTO articles (filename, owner, name, descr, image1, image2, category, added, info_hash, size, numfiles, save_as, news, external, nfo, lang, visible, anon,tube, last_action) VALUES (".sqlesc($fname).", '".$CURUSER['id']."', ".sqlesc($name).", ".sqlesc($descr).", '".$inames[0]."', '".$inames[1]."', '".$catid."', '" . get_date_time() . "', '".$infohash."', '".$articlesize."', '".$filecount."', ".sqlesc($fname).", '".$news."', '".$external."', '".$nfo."', '".$langid."','$visible', '$anon', ".sqlesc($tube).",'".get_date_time()."')");
并且
$visible = 1;
答案 0 :(得分:2)
您忘记添加数据类型。
您可能需要以下内容:
ALTER TABLE `articles` ADD `visible` TINYINT NOT NULL DEFAULT 1
如果这不能解决问题,那么您可以在代码中的某处设置默认值。
答案 1 :(得分:1)
您需要定义要插入特定类型的列。通用ALTER
语句应遵循此格式。
ALTER TABLE table_name ADD column_name column-definition;
我假设您只想拥有1或0,所以以下内容应该有效:
ALTER TABLE `articles` ADD `visible` TINYINT NOT NULL DEFAULT 1