0

テーブルからランダムなモンスター チームを生成し、6 に制限しました。さらに、フィールド m1、m2、m3、m4、m5、m6 を含む user_team にチームを挿入したいと考えています。

これらはモンスター 1 からモンスター 6 を表しています。生成されたモンスターをチームに挿入しようとすると、すべてのモンスターが挿入されている間に、最後のモンスターだけが挿入されているように見えます。 http://prntscr.com/8zrj2

$sql = "SELECT * from monsterdata ORDER BY RAND() LIMIT 6"; 
$result = mysql_query($sql);
// this checks if you have a result
if ($result == null) echo "No result";
else {  
    while (($row = mysql_fetch_array($result)) != false) {
$row = mysql_fetch_array($result);
{
// html code here
}
}

挿入ステートメントは $monster = $row['id']; $sql = "INSERT into user_team(m1,m2,m3,m4,m5,m6) VALUES('$monster','$monster','$monster','$monster','$monster','$monster')"; $result = mysql_query($sql);

どこに/どのように配置するかわからないので、正しい値を正しい列に挿入します。

4

2 に答える 2

0

私だったら、ID を配列にプッシュしてから、次のように使用します。

$monsterIds = array();
while(($row = mysql_fetch_array($result)) !== false) {
    $monsterIds[] = $row['id'];
}
mysql_query("INSERT INTO user_team (m1, m2, m3, m4, m5, m6) VALUES ('{$monsterIds[0]}', '{$monsterIds[2]}', '{$monsterIds[3]}', '{$monsterIds[4]}', '{$monsterIds[5]}')") or die(mysql_error());

また、行の結果を比較するときにトリプルイコールを使用することを忘れないでください。これにより、実際には false ではないものが false に評価されるという奇妙なバグに巻き込まれることはありません (=== は多くの関数で使用される方法です)。結果に応じて、配列、整数、またはブール値のいずれかを返す可能性があります)。

値は、指定された順序で列に配置されます。

于 2012-05-08T04:50:33.240 に答える
0

PDO (php ライブラリ) を使用した例を次に示します。

$DBH = new PDO("mysql:host=$db_host;dbname=$db_name", $username, $password);
$webContractList=$DBH->query('SELECT id,nume,data FROM user2')->fetchAll();

$STH=$DBH->prepare("INSERT INTO user (id,nume,data) VALUES (:id ,:nume , :data)");

foreach ($webContractList as $item){           
    $STH->execute(array(':id'=>$item['id'],
                ':nume'=>$item['nume'],
                ':data'=>date('Y-m-d',strtotime($item['data']))));
}
于 2012-05-08T09:03:35.207 に答える