使用sql语句删除products_status=0产品

2013 年 08 月 08 日 下午 3:53  |  分类:Zen-Cart二次开发

使用sql语句删除products_status=0产品的sql如下:

— -删除products_status = 0 产品
第一步:

Delete from `products_description` where `products_id` IN ( Select `products_id` from `products` where `products_status` = 0 );
Delete from `products_to_categories` where `products_id` IN ( Select `products_id` from `products` where `products_status` = 0 );
Delete from `specials` where `products_id` IN ( Select `products_id` from `products` where `products_status` = 0 );
Delete from `meta_tags_products_description` where `products_id` IN ( Select `products_id` from `products` where `products_status` = 0 );

全文阅读 »

zen-cart部分常用数据库字段修改

2013 年 07 月 15 日 上午 9:29  |  分类:Zen-Cart二次开发

在做zen-cart网站的时候,特别是仿站的时候,会遇到一些网站的产品名字特别长,或者目录名字比较长,超出了默认zen-cart的设置的字段长度,所以要对数据库的字段进行修改来加长,一下就是一些常用的sql语句:

ALTER TABLE `categories_description` CHANGE `categories_description` `categories_description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL ;
ALTER TABLE `categories_description` CHANGE `categories_name` `categories_name` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;
ALTER TABLE `categories` CHANGE `categories_image` `categories_image` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;
ALTER TABLE `products` CHANGE `products_image` `products_image` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;
ALTER TABLE `products_description` CHANGE `products_name` `products_name` VARCHAR( 254 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;
ALTER TABLE `products` CHANGE `products_model` `products_model` VARCHAR( 64 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;

全文阅读 »

zen-cart图片名字及产品名字显示不完整解决

2012 年 05 月 25 日 下午 4:38  |  分类:Zen-Cart二次开发

zen-cart网站有时候产品的名字很长,或者图片名字很长,加上图片目录名字,就会发现这些图片在网站上显示不出来,

使用火狐firebug检查代码发现,图片的名字只显示了前面的一部分,这样图片当然显示不出来了,分析数据库发现,

是因为超出了该字段的长度,从而数据库只保存了对应长度的值。

修改方法,在后台执行sql语句:
ALTER TABLE `products` CHANGE `products_image` `products_image` VARCHAR( 150 ) CHARACTER SET latin1 COLLATE latin1_general_ci NULL DEFAULT NULL ;
ALTER TABLE `products_description` CHANGE `products_name` `products_name` VARCHAR( 150 ) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL  ;
ALTER TABLE `categories` CHANGE `categories_image` `categories_image` VARCHAR( 150 ) CHARACTER SET latin1 COLLATE latin1_general_ci NULL DEFAULT NULL ;
ALTER TABLE `categories_description` CHANGE `categories_name` `categories_name` VARCHAR( 150 ) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL DEFAULT ”;

这几个语句将字段长度修改成150, 一般够用了,不够或者不需要这么长的可以自行修改。

输出mysql数组

2010 年 12 月 08 日 上午 11:12  |  分类:SQL

mysql数组问题:
 //$qrystr = mysql_query(“SELECT zid,zname from `dede_onlinetest` order by zid asc;”);
 
 //形成新的数组
// while ($row = mysql_fetch_array($qrystr)) {
// $row1[]=$row;
// }

print_r($row1);

SQL中字符串替换方法

2010 年 10 月 06 日 下午 3:00  |  分类:SQL

REPLACE ( ‘string_expression1’ , ‘string_expression2’ , ‘string_expression3’ )
参数
‘ string_expression1 ‘
要搜索的字符串表达式。string_expression1 参数的数据类型可以是可隐式转换为 nvarchar 或 ntext 的数据类型。
‘ string_expression2 ‘
尝试查找的字符串表达式。string_expression2 参数的数据类型可以是可隐式转换为 nvarchar 或 ntext 的数据类型。
‘ string_expression3 ‘
替换字符串表达式。string_expression3 参数的数据类型可以是可隐式转换为 nvarchar 或 ntext 的数据类型。

返回值
nvarchar 或 ntext
如果任意参数为 NULL,则返回 NULL。
实际操作:
单变量用法:
declare @dim_time nvarchar(300)
set @dim_time=’ (CallStartTime>=”2009-01-01 23:00:00”) ‘
select @dim_time=replace(@dim_time,’CallStartTime’,’HoTime’);
print(@dim_time);
结果:(HoTime>=’2009-01-01 23:00:00′)

对结果集/表使用:
update table[表名] set Fields[字段名]=replace(Fields[字段名],’被替换原内容’,’要替换成的内容’)
例:update ProgInfo set Time=replace(Time,’2008-3-2′,’2007-03-02′)
eg:update meta_tags_products_description set metatags_description=replace(metatags_description,’favoruggs’,’abc’);

sql外键约束

2010 年 08 月 07 日 下午 4:21  |  分类:SQL

NO ACTION
指定如果试图删除/修改某一行,而该行的键被其他表的现有行中的外键所引用,则产生错误并回滚 DELETE/UPDATE语句。
CASCADE、SET NULL 和 SET DEFAULT
允许通过删除或更新键值来影响指定具有外键关系的表,这些外键关系可追溯到在其中进行修改的表。如果为目标表也定义了级联引用操作,那么指定的级联操作也将应用于删除或更新的那些行。不能为具有 timestamp 列的外键或主键指定 CASCADE。
ON DELETE CASCADE
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则也将删除所有包含那些外键的行。
ON UPDATE CASCADE
指定如果试图更新某一行中的键值,而该行的键值被其他表的现有行中的外键所引用,则组成外键的所有值也将更新到为该键指定的新值。 (如果 timestamp 列是外键或被引用键的一部分,则不能指定 CASCADE。 )
ON DELETE SET NULL
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。目标表的所有外键列必须可为空值,此约束才可执行。
ON UPDATE SET NULL
指定如果试图更新某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。目标表的所有外键列必须可为空值,此约束才可执行。
ON DELETE SET DEFAULT
指 定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。目标表的所有外键列必须具 有默认值定义,此约束才可执行。如果某个列可为空值,并且未设置显式的默认值,则会使用 NULL 作为该列的隐式默认值。因 ON DELETE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。
ON UPDATE SET DEFAULT
指 定如果试图更新某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。目标表的所有外键列必须具 有默认值定义,此约束才可执行。如果某个列可为空值,并且未设置显式的默认值,则会使用 NULL 作为该列的隐式默认值。因 ON UPDATE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。

ps:对于有外键的表,外键必须设置为允许空(null)才可以插入数据。

用SQL语句上下架产品

2010 年 06 月 30 日 上午 7:46  |  分类:Zen-Cart二次开发

zen-cart网店有时候需要产品上下架操作,去后台一个一个产品的改比较麻烦也比较慢,使用后台的sql导入功能就可以比较快而准确的来进行上下架了,下面是几种情况,可以根据实际情况来选用:

— 根据一组model号下架产品,把产品数量改为0,每个model号用单引号引起来,多个model号之间用英文逗号隔开
UPDATE `products` SET `products_quantity` = ‘0’ WHERE `products_model` IN(‘DVD-SPEED’,’DVD-CUFI’,’DVD-TSAB’,’PC-TWOF’,’MSIMEXP’,’GIFT005′);

— 如果下架产品太多,既把产品数量改为0又把该产品关闭掉
UPDATE `products` SET `products_quantity` = ‘0’,`products_status` = ‘0’ WHERE `products_model` IN(‘DVD-SPEED’,’DVD-CUFI’,’DVD-TSAB’,’PC-TWOF’,’MSIMEXP’,’GIFT005′);

— 上架产品:如果已经存在该产品的话上架执行如下sql语句,如果不存在的情况下请导入产品批量表
UPDATE `products` SET `products_quantity` = ‘360’,`products_status` = ‘1’ WHERE `products_model` IN(‘DVD-SPEED’,’DVD-CUFI’,’DVD-TSAB’,’PC-TWOF’,’MSIMEXP’,’GIFT005′);

导入大sql文件方法

2010 年 02 月 19 日 上午 11:28  |  分类:长沙网站开发

有时候备份的sql文件会比较大,超出phpadmin能够处理的大小,那么我可以可以采用命令行的方式来进行导入。

>mysql -u 用户名 -p口令 [-h 数据库主机] 数据库 < 数据库备份.sql

这里我假设我的数据库是lemon要导入的数据在D:\MySQL5.0\bin\lemon.sql

windows:
开始 -> 运行 -> cmd
C:\Documents and Settings\Administrator>

然后进入到mysql的bin目录下,

D:\MySQL5.0\bin>mysql -uroot -p123456 lemon< lemon.sql
回车导入就OK了