华域联盟 perl perl 学习资料整理篇第1/4页

perl 学习资料整理篇第1/4页

NULL值的判断

$t{type1id} = $$pref{dbh}->selectrow_array("SELECT type1id FROM enq1 WHERE id =

3");

if ( $t{type1id} == 0 ) {

print "Type1id is NULL\n";

}

==>不是数值项的话,这个语句有问题。数值项专用。

if ( length($t{type1id}) == 0 ) {

print "Type1id is NULL\n";

}

==>如果Null的话,这个语句有问题

如果@rec含有NULL的话,下面的操作要出错误信息

$t{line1} = join(' ',@rec);

($t{old1},$t{new1p},$t{new1q}) = $self->dbh->selectrow_array("SELECT

type1id,partsid,QTY FROM enq1 WHERE id = $t{enq1_id}");

91==> if ( $t{old1} == 0 ) {

--------------------------------------------------

[error] [client 127.0.0.1] Use of uninitialized value in numeric eq (==) at

./pro/mscenq1.pl line 91, <CONFIG> line 11.,

--------------------------------------------------

如何判断一个项目的值是否是NULL(未解决)

解决!第一次INSERT时,放一个常数(比如"B")

起源==>

637==> $t{Nu1} = $self->dbh->selectrow_array("select parts_Unit from parts_nu

where id = $t{Nuid1}");

--------------------------------------------------

[Wed May 14 17:27:51 2008] [error] [client 127.0.0.1] DBD::mysql::db

selectrow_array failed: You have an error in your SQL syntax; check the manual

that corresponds to your MySQL server version for the right syntax to use near

'' at line 1 at ./pro/mscenq1.pl line 637, <CONFIG> line 11., referer:

--------------------------------------------------

要考虑$t{Nuid1}不存在的情况

考虑id=C的情况

591==>

@{ $t{p1} } = $self->dbh->selectrow_array("SELECT * FROM $t{ptable}

WHERE id = $t{pid1}");

--------------------------------------------------

[error] [client 127.0.0.1] DBD::mysql::db selectrow_array failed: Unknown

column 'C' in 'where clause' at ./pro/mscenq1.pl line 591, <CONFIG> line 11.,

referer:

--------------------------------------------------

要考虑$t{pid1}='C'的情况

if ( $#{ $t{pid_list} } == 0 && $t{pid_list}[0] eq 'C' ) {

next;

}

COPY一个项目的subroutine

use strict;

use DBI;

# 连接数据库

my(%t,$n,@fld,@rec,$pref);

print "This is test3.pl.\n";

# 连接数据库

$$pref{dsn} = "DBI:mysql:host=localhost;database=cookbook";

$$pref{dbh} = DBI->connect($$pref{dsn}, "cbuser", "cbpass") or die "Cannot

connect to server\n";

$$pref{dbh}->do("SET NAMES utf8");

if(!$$pref{dbh}){

print "SQL read ERROR!\n";

exit;

}

$$pref{table} = 'enq2';

$$pref{oldid} = 4;

($pref) = copy_one($pref);

# 关闭数据库

$$pref{dbh}->disconnect;

# COPY一个项目

sub copy_one {

my($pref) = @_;

my(%t,@rec,$n);

# 取出COLUMNS

$t{sth} = $$pref{dbh}->prepare("SHOW COLUMNS FROM $$pref{table}");

$t{sth}->execute;

while ( @rec = $t{sth}->fetchrow_array ) {

push(@{ $t{columns} },$rec[0]);

}

$t{sth}->finish;

# 取出数据(同时记住不是NULL的项目)

@{ $t{one} } = $$pref{dbh}->selectrow_array("SELECT * FROM $$pref{table}

WHERE id = $$pref{oldid}");

for $n ( 1 .. $#{ $t{one} } ) {

$t{name} = $t{columns}[$n];

$t{value} = $t{one}[$n];

if ( $t{value} ) {

$t{value} = '"' . $t{value} . '"';

push(@{ $t{names} },$t{name});

push(@{ $t{values} },$t{value});

}

}

$t{name1} = join(',',@{ $t{names} });

$t{value1} = join(',',@{ $t{values} });

# 插入新项目

$t{sql} = 'INSERT INTO ' . $$pref{table} . '(';

$t{sql} .= $t{name1} . ') VALUES(';

$t{sql} .= $t{value1} . ')';

$t{DO} = $$pref{dbh}->do($t{sql});

# print "DO=$t{DO}\n";

return($pref);

}

# 可能MySQL存在很简单的命令执行上面的操作。已经做过的程序就放在这儿了。

--------------------------------------------------------------------------------

MySQL操作程序二

返回

--------------------------------------------------------------------------------

不许OURREF重复的操作

$t{enq1_id} = $t{q}->param("enq1_id");

$t{our1_new} = $self->dbh->selectrow_array("SELECT ourref FROM enq1 WHERE id = $t{enq1_id}");

# 取得现有所有quo2的enq1id数据,如果有一样的不允许切换

# enq1和quo2必须是一对一关系

# 取出所有的OURREF

$t{sth} = $self->dbh->prepare("SELECT enq1id FROM quo2");

$t{sth}->execute;

while ( @rec = $t{sth}->fetchrow_array ) {

$t{our1} = $self->dbh->selectrow_array("SELECT ourref FROM enq1 WHERE id = $rec[0]");

push(@{ $t{our1s} },$t{our1});

}

$t{sth}->finish;

$t{our1_old} = join(' ',@{ $t{our1s} });

if ( $t{our1_old} !~ /$t{our1_new}/ ) {

$t{sql} = 'UPDATE quo2 SET enq1id ="';

$t{sql} .= $t{enq1_id} . '" WHERE id = "';

$t{sql} .= $t{quo2_id} . '"';

$t{DO} = $self->dbh->do("$t{sql}");

}

删除表格内容的一些操作

显示表格hull_no的第309行到362行的内容

mysql> SELECT * from hull_no WHERE id >= 309 AND id <= 362;

删除表格hull_no的第309行到362行的HULL_NO

mysql> UPDATE hull_no SET HULL_NO = "" WHERE id >= 309 AND id <= 362;

Query OK, 54 rows affected (0.16 sec)

Rows matched: 54 Changed: 54 Warnings: 0

删除表格hull_no的第309行到362行的name

mysql> UPDATE hull_no SET name = "" WHERE id >= 309 AND id <= 362;

Query OK, 54 rows affected (0.01 sec)

Rows matched: 54 Changed: 54 Warnings: 0

表格删除一行操作

mysql> show columns from quo2;

+-----------+---------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-----------+---------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| time | date | YES | | NULL | |

| enq1id | int(11) | YES | | NULL | |

| ORIGINid | int(11) | YES | | NULL | |

| PRICEid | int(11) | YES | | NULL | |

| PAYMENTid | int(11) | YES | | NULL | |

| DELIVERY | text | YES | | NULL | |

| percent0 | int(11) | YES | | NULL | |

| percent | text | YES | | NULL | |

| price | text | YES | | NULL | |

| total | int(11) | YES | | NULL | |

| memo | text | YES | | NULL | |

+-----------+---------+------+-----+---------+----------------+

12 rows in set (0.08 sec)

mysql> ALTER TABLE quo2 DROP enq1id;

Query OK, 6 rows affected (0.27 sec)

Records: 6 Duplicates: 0 Warnings: 0

mysql> show columns from quo2;

+-----------+---------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-----------+---------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| time | date | YES | | NULL | |

| ORIGINid | int(11) | YES | | NULL | |

| PRICEid | int(11) | YES | | NULL | |

| PAYMENTid | int(11) | YES | | NULL | |

| DELIVERY | text | YES | | NULL | |

| percent0 | int(11) | YES | | NULL | |

| percent | text | YES | | NULL | |

| price | text | YES | | NULL | |

| total | int(11) | YES | | NULL | |

| memo | text | YES | | NULL | |

+-----------+---------+------+-----+---------+----------------+

11 rows in set (0.02 sec)

mysql> show columns from order1;

+-----------+---------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-----------+---------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| time | date | YES | | NULL | |

| orderno | text | YES | | NULL | |

| ORIGINid | int(11) | YES | | NULL | |

| PRICEid | int(11) | YES | | NULL | |

| PAYMENTid | int(11) | YES | | NULL | |

| DELIVERY | text | YES | | NULL | |

| price | text | YES | | NULL | |

| total | text | YES | | NULL | |

| memo | text | YES | | NULL | |

+-----------+---------+------+-----+---------+----------------+

10 rows in set (0.02 sec)

mysql> ALTER TABLE order1 DROP price;

Query OK, 10 rows affected (0.24 sec)

Records: 10 Duplicates: 0 Warnings: 0

mysql> ALTER TABLE order1 DROP total;

Query OK, 10 rows affected (0.17 sec)

Records: 10 Duplicates: 0 Warnings: 0

mysql> show columns from order1;

+-----------+---------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-----------+---------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| time | date | YES | | NULL | |

| orderno | text | YES | | NULL | |

| ORIGINid | int(11) | YES | | NULL | |

| PRICEid | int(11) | YES | | NULL | |

| PAYMENTid | int(11) | YES | | NULL | |

| DELIVERY | text | YES | | NULL | |

| memo | text | YES | | NULL | |

+-----------+---------+------+-----+---------+----------------+

8 rows in set (0.01 sec)

表格增加一行操作

mysql> show columns from enq2;

+-----------+---------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-----------+---------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| time | date | YES | | NULL | |

| enq1id | int(11) | YES | | NULL | |

| ORIGINid | int(11) | YES | | NULL | |

| PRICEid | int(11) | YES | | NULL | |

| PAYMENTid | int(11) | YES | | NULL | |

| makerid | int(11) | YES | | NULL | |

| DELIVERY | text | YES | | NULL | |

| type1id | text | YES | | NULL | |

| partsid | text | YES | | NULL | |

| QTY | text | YES | | NULL | |

| memo | text | YES | | NULL | |

+-----------+---------+------+-----+---------+----------------+

12 rows in set (0.06 sec)

mysql> ALTER TABLE enq2 ADD LANGUAGEid INT AFTER enq1id;

Query OK, 1 row affected (0.45 sec)

Records: 1 Duplicates: 0 Warnings: 0

mysql> show columns from enq2;

+------------+---------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+------------+---------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| time | date | YES | | NULL | |

| enq1id | int(11) | YES | | NULL | |

| LANGUAGEid | int(11) | YES | | NULL | |

| ORIGINid | int(11) | YES | | NULL | |

| PRICEid | int(11) | YES | | NULL | |

| PAYMENTid | int(11) | YES | | NULL | |

| makerid | int(11) | YES | | NULL | |

| DELIVERY | text | YES | | NULL | |

| type1id | text | YES | | NULL | |

| partsid | text | YES | | NULL | |

| QTY | text | YES | | NULL | |

| memo | text | YES | | NULL | |

+------------+---------+------+-----+---------+----------------+

13 rows in set (0.00 sec)

mysql> show columns from quo1;

+----------+---------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+----------+---------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| time | date | YES | | NULL | |

| enq2id | int(11) | YES | | NULL | |

| makerref | text | YES | | NULL | |

| memo | text | YES | | NULL | |

+----------+---------+------+-----+---------+----------------+

5 rows in set (0.30 sec)

mysql> ALTER TABLE quo1 ADD price TEXT AFTER makerref;

Query OK, 2 rows affected (0.67 sec)

Records: 2 Duplicates: 0 Warnings: 0

mysql> show columns from quo1;

+----------+---------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+----------+---------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| time | date | YES | | NULL | |

| enq2id | int(11) | YES | | NULL | |

| makerref | text | YES | | NULL | |

| price | text | YES | | NULL | |

| memo | text | YES | | NULL | |

+----------+---------+------+-----+---------+----------------+

6 rows in set (0.02 sec)

修改一个Column的操作(改名和改数据定义)

mysql> show columns from order1;

+-----------+---------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-----------+---------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| time | date | YES | | NULL | |

| quo2id | int(11) | YES | | NULL | |

| ORIGINid | int(11) | YES | | NULL | |

| PRICEid | int(11) | YES | | NULL | |

| PAYMENTid | int(11) | YES | | NULL | |

| DELIVERY | text | YES | | NULL | |

| price | text | YES | | NULL | |

| total | text | YES | | NULL | |

| memo | text | YES | | NULL | |

+-----------+---------+------+-----+---------+----------------+

10 rows in set (0.16 sec)

mysql> ALTER TABLE order1 CHANGE quo2id orderno TEXT;

Query OK, 6 rows affected (0.56 sec)

Records: 6 Duplicates: 0 Warnings: 0

mysql> show columns from order1;

+-----------+---------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-----------+---------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| time | date | YES | | NULL | |

| orderno | text | YES | | NULL | |

| ORIGINid | int(11) | YES | | NULL | |

| PRICEid | int(11) | YES | | NULL | |

| PAYMENTid | int(11) | YES | | NULL | |

| DELIVERY | text | YES | | NULL | |

| price | text | YES | | NULL | |

| total | text | YES | | NULL | |

| memo | text | YES | | NULL | |

+-----------+---------+------+-----+---------+----------------+

10 rows in set (0.02 sec) 

1
2
3
4
下一页
阅读全文

本文由 华域联盟 原创撰写:华域联盟 » perl 学习资料整理篇第1/4页

转载请保留出处和原文链接:https://www.cnhackhy.com/76498.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部