我正在编写一个脚本来将示例数据安装到数据库中。我有一个我编写的脚本,我称之为“通用数据生成器”。这个PHP文件包含各种生成随机数据的函数。
示例功能:
// Random number generator.
function gdg_number( $number_start, $number_end ) {
return rand( $number_start, $number_end );
}
示例查询:
function gdg_values( $results ) {
$values = "";
for ( $i = 1; $i <= $results; $i++) {
$values .= "
'" . gdg_sentence(3,12) . "',
'" . gdg_multi_paragraphs(1,5,5,8,4,17) . "',
'" . gdg_multi_paragraphs(1,5,5,8,4,17) . "',
'" . gdg_number(100,900) . "." . gdg_number(00,99) . "',
'" . gdg_number(1,20) . "',
'" . gdg_number(0,50) . "',
'" . gdg_string(10,10) . "',
'0'
), (";
}
return $values;
}
$value = gdg_values( 100 );
$values = substr( $value, 0, -4);
我遇到的问题是在我使用脚本插入多行后查看MySQL表时,我注意到有重复的数据条目。每列的整行具有相同的值。
什么可能导致gdg_values()
每3行产生相同的结果? (注意,即使我将$values
重复直接手动复制/粘贴到MySQL查询中,也会这样做。
这是完整的generic_data_generator.php
文件。
这是完整的products.php
文件,它包含在数据库的安装脚本中,用于将示例数据安装到产品MySQL表中。
答案 0 :(得分:3)
如Is rand() time-dependent in php?所述:
请注意,自动播种似乎是使用当前秒数完成的,这意味着您可以在快速服务器上为多次运行获得相同的结果。要么使用更频繁更改的种子调用srand(),要么使用mt_rand(),这似乎不会遇到问题。
因此,您可以使用:
function gdg_number( $number_start, $number_end ) {
return mt_rand( $number_start, $number_end );
}
或者,您可以使用:
function gdg_number( $number_start, $number_end ) {
srand();
return rand( $number_start, $number_end );
}
其中应更频繁地创建不同的随机值。
答案 1 :(得分:1)
这不是一个答案,但可能对评论来说太长了。
确保您的文字字段已正确转义。我不知道你的文本生成函数在做什么,但是它们的输出需要通过mysql_real_escape_string
运行(实际上,你应该使用mysqli
函数)。
您的product_price
字段是整数,但您输入的是十进制数。
函数gdg_number
不需要,因为它只返回具有完全相同参数的rand
。杀死该功能,只需使用rand
。
使用0而不是00.好吧,它可能没有区别,但前导0表示八进制。