【发布时间】:2015-03-12 18:58:42
【问题描述】:
这里是新的。 我正在尝试生成 100000 张凭证并将它们发送到数据库。这是我的代码:
<?php
set_time_limit(5400);
ini_set('memory_limit', '2048M');
$connection = mysql_connect("...", "...", "...");
$db = mysql_select_db("...", $connection);
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
for ($i=0;$i<100000;$i++){
$voucher = substr(md5($i), 0, 6);
$query = mysql_query("insert into voucher(nr_voucher) values ($voucher)");
}
mysql_close($connection);
?>
结果是错误的行数(当使用 1000 进行测试时,它返回 67 行)和奇怪的 hexa,md5 的前 6 位不应该是,如“2.8e21”和“0”。 任何帮助表示赞赏,谢谢。
【问题讨论】:
-
很明显,它将十六进制值转换为数字,就好像它是一个字符串,而不是一个十六进制值。例如,285e19(您的凭证值之一)正在变为 2.8e21。同样,b70683 将变为 0,因为 b 不是数字开头的有效方式。我建议将 nr_vouicher 设为 char(6) 字段并插入“$voucher”。
-
最好将您的归档类型更改为 varchar 并将长度设置为 60 并使用事务命令。如果执行 all 将执行,否则将执行注释。