एक चर के आधार पर एकाधिक आवेषण कैसे प्रबंधित करें

तो मूल रूप से मेरे पास यह गेम है जहां आप 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)");
}
0
जोड़ा
विचारों: 1

1 उत्तर

कक्षाओं के लिए मूल्यों की कुछ सरणी परिभाषित करें। जैसे

$class_items = array(
    1 => array(array(101,1,3788,1), array(102,3,1614,1),...),
    2 => array(),
   //etc
);

उसके बाद आप class_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)  . '), ';
}
0
जोड़ा
अच्छा! मुझे केवल यह समझना होगा कि यह मुझे वाक्यविन्यास त्रुटि क्यों देता है। ... लाइन 2 पर '' के पास उपयोग करने के लिए सही वाक्यविन्यास के लिए Bla Bla '
जोड़ा लेखक peckinpah, स्रोत
आह ऐसा लगता है क्योंकि यह पिछले एक इंसर्ट पर एक अल्पविराम जोड़ता है ...... (46, 110,102,2554,1),
जोड़ा लेखक peckinpah, स्रोत
इसे आरटीआईएमआईएम के साथ हल किया गया ()
जोड़ा लेखक peckinpah, स्रोत
$ query प्रिंट करें और उदाहरण के लिए phpMyAdmin में इसे निष्पादित करने का प्रयास करें। फिर तदनुसार इसे सही करें।
जोड़ा लेखक u_mulder, स्रोत