Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何管理基于变量的多个插入_Php_Sql - Fatal编程技术网

Php 如何管理基于变量的多个插入

Php 如何管理基于变量的多个插入,php,sql,Php,Sql,所以基本上我有一个游戏,你可以在4个类中选择。现在每个类都有自己的项集 这就是我目前的做法。当玩家创造一个角色时。 虽然很好,但是很乱。有没有更好的办法?嗯,我很确定有,但是怎么做呢?能给我拿些指针吗 if ($class == 1) { INSERT INTO items (playerid, sid, pid, type, count) VALUES (".$db->lastInsertId().",101,1,3788,1), (".$db->lastInse

所以基本上我有一个游戏,你可以在4个类中选择。现在每个类都有自己的项集

这就是我目前的做法。当玩家创造一个角色时。 虽然很好,但是很乱。有没有更好的办法?嗯,我很确定有,但是怎么做呢?能给我拿些指针吗

if ($class == 1) {
INSERT INTO items (playerid, sid, pid, type, count) 
    VALUES (".$db->lastInsertId().",101,1,3788,1),
    (".$db->lastInsertId().",102,3,1614,1),
    (".$db->lastInsertId().",103,4,1555,1),
    (".$db->lastInsertId().",104,5,1308,1),
    (".$db->lastInsertId().",105,6,2000,1),
    (".$db->lastInsertId().",106,7,1101,1),
    (".$db->lastInsertId().",107,8,1714,1),
    (".$db->lastInsertId().",108,10,1010,1),
    (".$db->lastInsertId().",109,102,2112,1),
    (".$db->lastInsertId().",110,102,5432,1)");
}

if ($class == 2) {
INSERT INTO items (playerid, sid, pid, type, count) 
    VALUES (".$db->lastInsertId().",101,1,2352,1),
    (".$db->lastInsertId().",102,3,3463,1),
    (".$db->lastInsertId().",103,4,1223,1),
    (".$db->lastInsertId().",104,5,5232,1),
    (".$db->lastInsertId().",105,6,2794,1),
    (".$db->lastInsertId().",106,7,1991,1),
    (".$db->lastInsertId().",107,8,1239,1),
    (".$db->lastInsertId().",108,10,1891,1),
    (".$db->lastInsertId().",109,102,1331,1),
    (".$db->lastInsertId().",110,102,3041,1)");
}

if ($class == 3) {
INSERT INTO items (playerid, sid, pid, type, count) 
    VALUES (".$db->lastInsertId().",101,1,2352,1),
    (".$db->lastInsertId().",102,3,1255,1),
    (".$db->lastInsertId().",103,4,6236,1),
    (".$db->lastInsertId().",104,5,2352,1),
    (".$db->lastInsertId().",105,6,2364,1),
    (".$db->lastInsertId().",106,7,346,1),
    (".$db->lastInsertId().",107,8,7345,1),
    (".$db->lastInsertId().",108,10,1010,1),
    (".$db->lastInsertId().",109,102,2112,1),
    (".$db->lastInsertId().",110,102,5432,1)");
}

if ($class == 4) {
INSERT INTO items (playerid, sid, pid, type, count) 
    VALUES (".$db->lastInsertId().",101,1,457,1),
    (".$db->lastInsertId().",102,3,1777,1),
    (".$db->lastInsertId().",103,4,1145,1),
    (".$db->lastInsertId().",104,5,1358,1),
    (".$db->lastInsertId().",105,6,2000,1),
    (".$db->lastInsertId().",106,7,1101,1),
    (".$db->lastInsertId().",107,8,4527,1),
    (".$db->lastInsertId().",108,10,1570,1),
    (".$db->lastInsertId().",109,102,2812,1),
    (".$db->lastInsertId().",110,102,5432,1)");
}

为类定义一些值数组。例如

$class_items = array(
    1 => array(array(101,1,3788,1), array(102,3,1614,1),...),
    2 => array(),
    // etc
);
之后,您可以基于类\ id创建查询,例如

$class_id = 1;
$ins_id = $db->lastInsertId();
$query = 'INSERT INTO items (playerid, sid, pid, type, count) 
VALUES ';
foreach ($class_items[$class_id] as $item) {
    $query .= '("' . $ins_id . '", ' . implode(',', $item)  . '), ';
}

美好的我只需要找出为什么它会给我语法错误。。。例如,在第2行“Print
$query
并尝试在phpMyAdmin中执行它”附近使用的正确语法。然后相应地更正它。啊似乎是因为它在最后一个插入处加了一个逗号。。。。。。(461101022554,1),用rtrim()解决