分享

怎么样把aau的变量传递进mysql的查询语句

 quasiceo 2014-01-05

怎么样把aau的变量传递进mysql的查询语句

[复制链接]


6

主题

22

帖子

723

积分

快手四段

Rank: 4

积分
723
发表于 2011-8-18 17:40:21 | 显示全部楼层 |阅读模式
程序生成的变量,不知道怎么才能传进去,貌似会把变量名当成字符串。




0

主题

3

帖子

5

积分

快手一段

Rank: 1

积分
5
发表于 2011-8-18 20:36:29 | 显示全部楼层


  源代码 [ AAuto ]

变量名 = "字符串"
sql ="变量名" + 变量名
把变量名写在代码里,不要写到字符串里面




6

主题

22

帖子

723

积分

快手四段

Rank: 4

积分
723
 楼主| 发表于 2011-8-19 16:10:55 | 显示全部楼层
import mysql;
import string.md5;

io.open();

io.stdout.write(
"正在连接到 MySQL 服务器...");
var link = mysql(
   
"localhost",    // IP
    "root",         // 用户名
    ""              // 密码 //这里要改成自己服务器的密码
);

if ( ! link.handle ) {
    io.print(
'\r ...连接到 MySQL 服务器失败');
}
else {
    io.print(
'\r ...已连接到 MySQL 服务器');
   
    link.query(
"SET NAMES 'gbk'"); // 设置 MySQL 编码
    // 也可用 link.set_charset("gbk");
   
   
// 创建数据库: aautotest
    io.print("正在创建数据库: aautotest...");
   
if (!link.query("CREATE DATABASE IF NOT EXISTS `aautotest`")) {
        io.print(
"创建数据库失败: " + link.error);
        link.close();
        
return;
    }
   
   
// 选择数据库: aautotest
    io.print("正在选择数据库: aautotest...");
   
if (!link.select_db("aautotest")) {
        io.print(
"选择库失败: " + link.error);
        link.close();
        
return;
    }
   
   
// 创建表: temp
    io.print("正在创建表: temp...");
   
var re = link.query(
        
"CREATE TABLE IF NOT EXISTS `temp` (
            `id` smallint(11) unsigned NOT NULL AUTO_INCREMENT,
            `username` varchar(20) NOT NULL,
            `password` varchar(32) NOT NULL,
            PRIMARY KEY (`id`),
            UNIQUE KEY `username` (`username`)
        )"

    );
   
if (!re) {
        io.print(
"创建表失败: " + link.error);
        link.close();
        
return;
    }
   
   
// 加入数据
    io.print("正在向表中加入数据...");
    a =
"admin"
    b=
"test" //我把 这两个用户名赋予了变量 a 和 b原文这里是没有的
   
    link.query(
        string.format(
            
"insert into `temp` (`username`,`password`) values ('" + a +"','%s')",
        
// "INSERT INTO `temp` (`username`,`password`) VALUES ('admin', '%s')",
            //这是原文
        string.md5("123")
        )
    );
    link.query(
        string.format(
            
"insert into `temp` (`username`,`password`) values ('" + b +"','%s')",
            
//"INSERT INTO `temp` (`username`,`password`) VALUES ('test', '%s')",
            //这是原文就这几个标点符号搞得头都大了         
        string.md5("123456")
        )
    );

   
   
// 倒序读出数据
    io.print("正在倒序读出数据...");
   
// link.query 返回的是一个记录集
    var result = link.query("SELECT `id`,`username`,`password` FROM `temp` ORDER BY `id` DESC");
   
if (!result) {
        io.print(
"读取数据失败: " + link.error);
        link.close();
        
return;
    }
    io.print(
"id", "username", "password");
   
var row = result.fetch_array();
   
while (row) {
        io.print(row.id, row.username,
"", row.password);
        row = result.fetch_array();
    }
    result.free();
// 释放记录集
   
   
// 删除表: temp
    io.print("正在删除表: temp...");
   
if (!link.query("DROP TABLE IF EXISTS `temp`")) {
        io.print(
"删除表失败: " + link.error);
        link.close();
        
return;
    }
}
link.close();

io.print(
"演示结束,按任意键退出...");
execute("pause > nul");
io.close();









0

主题

43

帖子

266

积分

快手三段

Rank: 3Rank: 3

积分
266
发表于 2011-8-19 20:03:41 | 显示全部楼层
在SQL语句中,重音符等价于中括号

  源代码 [ AAuto ]

SELECT `id`,`username`,`password` FROM `temp`
也就等价于

  源代码 [ AAuto ]

SELECT [id],[username],[password] FROM [temp]
实际上也就等价于

  源代码 [ AAuto ]

SELECT id,username,password FROM temp
所以你不用纠结这些符号了,无论他有什么符号,他都是一个普通字符串。
你要把变量代入进去,就要用字符串连接。

例如把上面的语句中的temp替换为AAuto中的变量

  源代码 [ AAuto ]

var 变量 = "[temp]"
var sql  = "SELECT id,username,password FROM " + 变量




6

主题

22

帖子

723

积分

快手四段

Rank: 4

积分
723
 楼主| 发表于 2011-8-21 16:24:18 | 显示全部楼层
额,明白了,执行SQL语句时先把变量的值转成字符串跟SQL语句连接起来,就不用写这么复杂的语句了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多