除了MySQL中的1个条目外,如何从表中删除所有内容?
所以我有一个OpenCart的导入/导出模块,但它在插入新数据之前擦除整个产品选项表...
我需要为我拥有的第三方产品选项模块开发支持,但与此同时 - 我想我只是停止删除产品选项表中的重要列。
在
product_option_value
表中,我有'product_option','product_id,''数量'等,并且有一个名为'info'的列我不想擦除。方法如下:
function storeOptionsIntoDatabase( &$database, &$options )
{
// find the default language id
$languageId = $this->getDefaultLanguageId($database);
// start transaction, remove options
$sql = "START TRANSACTION;n";
$sql .= "DELETE FROM `".DB_PREFIX."product_option`;n";
$sql .= "DELETE FROM `".DB_PREFIX."product_option_description` WHERE language_id=$languageId;n";
$sql .= "DELETE FROM `".DB_PREFIX."product_option_value`;n";
$sql .= "DELETE FROM `".DB_PREFIX."product_option_value_description` WHERE language_id=$languageId;n";
$this->import( $database, $sql );
...more code...
}
我对MySQL并不熟悉,但我想要的是:
$sql .= "DELETE FROM `".DB_PREFIX."product_option_value` WHERE column != 'info';n";
谢谢!
编辑:
我试过迈克尔的建议使用UPDATE
并明确地将它们全部设置为NULL ...但是这返回了这个错误:
错误:键1的重复条目“0”
错误号:1062更新
oc_product_option_value
SET
product_option_value_id = NULL,
product_option_id = NULL,
product_id = NULL,quantity = NULL,
subtract = NULL,price = NULL,
prefix = NULL,sort_order = NULL,
weight = NULL,sku = NULL,image = NULL
我尝试取出主键:
$ sql。=“更新
".DB_PREFIX."product_option_value
SET product_option_id = NULL,
product_id = NULL,quantity = NULL,
subtract = NULL,price = NULL,
prefix = NULL,sort_order = NULL,
重量= NULL; n“个;
但我得到:
错误:键1的重复条目“1”
错误号:1062 INSERT INTO
`oc_product ....
编辑:
好的,所以我从INSERT中删除了'primary_key'字段...并且我没有收到来自上传的错误消息。但是当我查看产品选项时,我将此消息作为我页面的顶部:
注意:未定义的索引:名称在
/httpdocs/ocart/catalog/model/catalog/product.php
418行通知:未定义索引:
名字在
/httpdocs/ocart/catalog/model/catalog/product.php
在线418Notic ....它重复
没有找到相关结果
已邀请:
2 个回复
咳累录酬
之外,您想清除表
中所有列的值?如果这是你想要的,那么以下可能会奏效。在我们清楚你要做什么之前,请不要运行它!
语法意味着从表名中删除,而不是从列名中删除。你需要做的是将你的行设置为除了你想要保留的列之外的所有列,或者为
或空或者它们的默认值。 如果您需要保留一些行而不修改它们,请不要忘记添加
条件!如果没有
,此查询将清空整个表中指定的所有列。
浮凰量
语法将CSV导回数据库。