0

我有我的代码的这个小花絮,它最终被发送到 MySQL 数据库。其余的代码是合理的,但这段代码有时喜欢给我空数据。有什么办法可以防止这种情况发生吗?

编辑:这是整个块

//random Species
$sp_one = mt_rand(1,10);    
$one_species = "Water Leaper";

//random Genetics

if($one_species == "Water Leaper")
{
    $one_gene = mt_rand(1,5);

    if($one_gene < 3)
    {
        $one_genetics = "1";
    }

    else if($one_gene < 5)
    {
        $one_genetics = "2";
    }

    else
    {
        $one_genetics = "3";
    }
}

//random Gender
$one_sex_num = mt_rand(1,2);

if($one_sex_num == 1)
{
    $one_gender = "Female";
}

if($one_sex_num == 2)
{
    $one_gender = "Male";
}

//Entering it
$sql="INSERT INTO creatures (species, sex, location, genetics)
VALUES('{$one_species}','{$one_gender}', 's1','{$one_genetics}')";

mysqli_query($con,$sql);
4

2 回答 2

1

首先,您的 if 子句似乎有点多余。更简洁的代码:

if ($one_gene <3)      { $one_genetics = "1"; }
elseif ($one_gene <5)  { $one_genetics = "2"; }
else                   { $one_genetics = "3"; }

这应该总是返回一个值——如果其他一切都失败了,"3".

甚至可能更好:

$one_genetics = ($one_gene + 1) / 2; // integer division
于 2013-08-03T14:34:11.807 回答
0

我不知道你在做什么,但你可以看看这个:

<?php

    $animals = array();

    $animals[] = array('dog', 78, array('Komondor','Old English Sheepdog'));    
    $animals[] = array('Drosophila', 8, array('Vestigal','Ebony')); 

    $number_animals = count($animals) - 1;
    $list_size = 30;

    for($q = 1; $q <= $list_size; $q++){

        $rand = rand(0, $number_animals);
        $animal = $animals[$rand];

        $number_species = count($animal[2]) - 1;

        $rand = rand(0, $number_species);
        $randsex = rand(0, 1);

        $species = $animal[2][$rand];
        $sex = ($randsex ? 'male' : 'female');
        $genes = $animal[1];

        echo "$q: $species - $sex - $genes <br>";
    }

?>

观看现场演示:这里

如果您希望可以根据自己的意愿进行修改,它会随机绘制带有规格的动物。

于 2013-08-03T15:14:35.890 回答