怎么样把aau的变量传递进mysql的查询语句
[复制链接]
|
|
程序生成的变量,不知道怎么才能传进去,貌似会把变量名当成字符串。 |
|
|
|
|
|
|
|
发表于 2011-8-18 20:36:29
|
显示全部楼层
源代码 [ AAuto ]变量名 = "字符串"
sql ="变量名" + 变量名 把变量名写在代码里,不要写到字符串里面 |
|
|
|
|
|
|
|
楼主 |
发表于 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();
|
|
|
|
|
|
|
|
发表于 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 " + 变量
|
|
|
|
|
|
|
|
楼主 |
发表于 2011-8-21 16:24:18
|
显示全部楼层
额,明白了,执行SQL语句时先把变量的值转成字符串跟SQL语句连接起来,就不用写这么复杂的语句了。 |
|
|