PHP-在while循环中插入SQL

PHP-在while循环中插入SQL,php,while-loop,Php,While Loop,我从一张表中随机生成了一个怪物团队,限制为6。现在,我还想将团队插入到包含字段的user_team中 m1,m2,m3,m4,m5,m6 这些代表怪物1到怪物6。现在,当我尝试将生成的怪物插入到团队中时,只有最后一个怪物似乎正在插入,而我需要插入我所有的怪物。 Insert语句是 $monster=$row['id']; $sql=“插入用户团队(m1、m2、m3、m4、m5、m6)的值(“$monster”、“$monster”、“$monster”、“$monster”、“$monster

我从一张表中随机生成了一个怪物团队,限制为6。现在,我还想将团队插入到包含字段的user_team中 m1,m2,m3,m4,m5,m6

这些代表怪物1到怪物6。现在,当我尝试将生成的怪物插入到团队中时,只有最后一个怪物似乎正在插入,而我需要插入我所有的怪物。

Insert语句是
$monster=$row['id'];
$sql=“插入用户团队(m1、m2、m3、m4、m5、m6)的值(“$monster”、“$monster”、“$monster”、“$monster”、“$monster”、“$monster”)”;
$result=mysql\u查询($sql)


只是不知道放在何处/如何放置它,以便将正确的值插入正确的列。

如果是我,我会将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(==是许多函数的方法,这些函数可能返回数组、整数或布尔值,具体取决于结果)


值将按照提供的顺序放置在列中。

下面是我使用PDO(php库)的示例:


我试过了,结果就是这样。这应该是一个单一的,但它没有插入所有6个!:(谢谢你的帮助!忘了提一下它给出了一个未定义的偏移量:对于1到5@losfrijolest,这意味着完全替换你的while循环。从你的粘贴来看,你在while循环中运行了这个部分(因此是获取ID的对角线模式)。未定义的偏移量正在发生,因为它尚未结束。必须先完成循环,然后才能对数据执行任何操作。是的,我已检查了代码并修复了它!再次感谢@losfrijoles@
$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());
$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']))));
}