好的,我现在有另一个问题。这应该将序列放入mysql数据库,但它只放入序列的第一个字母。如何让它写出整个字符串?
$str = '';
for($i = 0; $i < 20; $i++)
{
if($letter_OR_number = rand(0,1))
{ // true: alphabet chosen
$str[] = chr(rand(65, 90));
}
else
{ // false: number chosen
$str[] = rand(0,9);
}
if($i % 4 == 3)
{
($i < 19)? $str[] = '-': $str[] = ' ';
}
}
$Query = "INSERT INTO `Donates` (`serial`, `Coins`) VALUES ('%s', '500')";
mysql_query(vsprintf($Query, $str),$link) or die(mysql_error());
foreach($str as $val){
echo $val;
}
mysql_close($link);
?>
答案 0 :(得分:1)
不知道您的代码实际上打算做什么,
if($letter_OR_number = rand(0,1))
应该是
if($letter_OR_number == rand(0,1))
在
$TestData[] = array($val);
你创建了一个数组数组,因此
$TestData[] = $val;
可能是你想要的......
答案 1 :(得分:0)
为什么要创建2个数组,最后你只想要一个字符串。试试这样的事情 -
$str = ''; // create a string, not an array
for($i = 0; $i < 20; $i++)
{
if($letter_OR_number = rand(0,1))
{ // true: alphabet chosen
$str .= chr(rand(65, 90));
}
else
{ // false: number chosen
$str .= rand(0,9);
}
if($i % 4 == 3)
{
($i < 19)? $str .= '-': $str .= ' ';
}
}
$Query = "INSERT INTO `Donates` SET `serial` = '%s', `Coins` = '500'";
mysql_query(vsprintf($Query, $str),$Verbinding);
修改强>
如果您仍想使用$str[]
,那么您需要先破坏。
$str = '';
for($i = 0; $i < 20; $i++) {
if($letter_OR_number = rand(0,1)) { // true: alphabet chosen
$str[] = chr(rand(65, 90)); }
else { // false: number chosen
$str[] = rand(0,9); }
if($i % 4 == 3) {
($i < 19)? $str[] = '-': $str[] = ' '; }
}
foreach($str as $val){
echo $val; }
$str = implode("",$str); // Implode to make your array a string
$Query = "INSERT INTO Donates (serial, Coins) VALUES ('%s', '500')";
mysql_query(vsprintf($Query, $str),$link) or die(mysql_error()); mysql_close($link); ?>
答案 2 :(得分:0)
您要做的是为您的硬币创建20个字符的唯一标识符,方法是以四个为一组创建字母和数字的混合。
PHP和MySQL都提供了一个函数,它会生成一个随机字符串,尽管有些细微差别。这样的字符串通常称为UUID(通用唯一标识符)。这实际上是一个标准,因为许多系统都需要这样的东西。
PHP函数uniqid()
将生成一个13或23个字符的随机字符串;基于时间戳。这是一个示例运行:
print uniqid(); # 151cfeeba8b833
print uniqid('', true); # 51cfeeba8b83f6.48956452
现在,这并没有以您要查找的格式提供数字。但是,有一个comment on the manual page提供了一个方便的功能:
function v4() {
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
// 32 bits for "time_low"
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
// 16 bits for "time_mid"
mt_rand(0, 0xffff),
// 16 bits for "time_hi_and_version",
// four most significant bits holds version number 4
mt_rand(0, 0x0fff) | 0x4000,
// 16 bits, 8 bits for "clk_seq_hi_res",
// 8 bits for "clk_seq_low",
// two most significant bits holds zero and one for variant DCE1.1
mt_rand(0, 0x3fff) | 0x8000,
// 48 bits for "node"
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
);
}
这称为v4,因为它是&#34;版本4&#34; UUID规范。以下是该函数edd08995-9d48-4e04-8e42-5270377c331f
的示例字符串。
MySQL有一个内置的uuid function,完全相同:
mysql> SELECT UUID();
-> '6ccd780c-baba-1026-9564-0040f4311e29'
您可以使用它来简化代码,然后您只需:
<?php
$q = "INSERT INTO `Donates` (`serial`, `Coins`) VALUES (UUID(), '500')";
mysql_query($q, $link) or die(mysql_error());
?>
您应该使用mysqli_*
函数,因为较旧的mysql函数将从PHP中删除。有关使用哪种API的讨论,请参阅手册中的this page。
以下是mysqli
的示例:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Error: (".$mysqli->connect_errno.") ".$mysqli->connect_error;
}
$q = "INSERT INTO `Donates` (`serial`, `Coins`) VALUES (UUID(), '500')";
$result = $mysqli->query($q);
if (!$result) {
echo "Error: ".$mysqli->error;
}
?>