mySQL

2017-11-28 46 views
5

में एक वैरिएबल वैल्यू के साथ टेबल नाम को कैसे सम्मिलित करें मैं एक गतिशील कोड बनाने की कोशिश कर रहा हूं जो किसी भी तालिका से किसी भी नाम से तैयार होगा लेकिन प्रत्येक तालिका नाम के बीच का अंतर एक चर है जो एक चर द्वारा उत्पन्न होता है : उदाहरण के लिए:mySQL

// कि कैसे मैं अपने चर मिल उदाहरण के लिए मान = 3

$pid = $GLOBALS["localid"]; 

// उदाहरण के लिए तालिका नाम tablename_3

है
$strTable = "tablename_" .$pid; 

है // यहाँ कैसे क्वेरी की तरह

$query = "SELECT * FROM . $strTable . where .....; 

मुझसे कोई गलती कहीं बना रही हूँ, लेकिन उस को समझ नहीं सकता और थोड़ी सी मदद

+2

यही नहीं है आप कैसे उपयोग एसक्यूएल। अपने प्रश्नों को पूर्वनिर्धारित करें। उन्हें एक साथ मत पकड़ो! –

+1

अपनी क्वेरी को प्रतिबिंबित करें, ताकि समस्या को हल करना आसान हो सके –

+0

अपनी क्वेरी को इस पर बदलें: - '$ query =" चुनें * $ strTable से ..... ";' –

उत्तर

3

डॉट्स निकालें और भी सुनिश्चित करें कि आप aroung एकल उद्धरण दिया है जहां

$query = "SELECT * FROM $strTable where '.....'; 
0

से एसक्यूएल के लिए तार concat मत करो कृपया सराहना करेंगे चाहिए। प्रत्येक तालिका के लिए शायद कक्षा का उपयोग करने का प्रयास करें, इस तरह आप कक्षा को तुरंत चालू करने के लिए अपने टैबलेटनाम चर को पार्स कर सकते हैं, इसके अंदर आपके पास टेबल नाम वाली संपत्ति होगी। इस तरह से प्रश्न बनाने के लिए यह बहुत खतरनाक है कि आप ऐसा कर रहे हैं, एसक्यूएल इंजेक्शन नामक कुछ है, और इस तरह का कोड एक निमंत्रण है। यह कोड आपके लिए सीखने और विकसित करने के लिए सिर्फ एक कच्चा नमूना है।

उदा .:

class atable { 
    $tablename = 'tablename'; 
    $pid = null; 

    public function generateSQL() 
    { 
     $sql = "SELECT * FROM {$this->tablename}"; 

     if (!empty($this->pid) 
     { 
      $sql .= " WHERE idcolumn = {$this->pid} "; 
    } 

    public function setPid($pid) 
    { 
     $this->pid = (integer) $pid; 
    } 
} 

$class = $_POST['tablename-parameter']; 

$table = new $class(); 
$sql = $table->generateSQL(); 

Please read this

+0

यह एक अच्छा विचार प्रतीत होता है लेकिन मेरे कोड में लागू करने के लिए केवल इतना आसान नहीं है! मैं कहां जोड़ूंगा। $ pid; उदाहरण के लिए! खेद है अगर अजीब लगता है बस ऐसा करने के लिए उपयोग नहीं किया जाता है। – DirWolf

+0

यह ठीक है, बस मैंने जो कोड दिया है उससे शुरू करें और इससे काम करें। पिड के लिए आपको केवल $ pid संपत्ति जोड़ने की आवश्यकता होगी, और फिर आप इसे सेट करने के लिए एक सार्वजनिक विधि बना सकते हैं, और आपको आवश्यक किसी भी जानकारी के लिए आगे बढ़ना पड़ता है। अद्यतन उत्तर को देखें। यदि आप PHP में प्रोग्राम करना चाहते हैं तो आपको ओओपी को ले जाने की आवश्यकता है। यह मूलभूत बात है, कृपया http://php.net/manual/en/language.oop5.php – Marco

+0

पढ़ें और निश्चित रूप से, सीखने के बाद, तैयार किए गए बयानों का उपयोग करने के लिए कोड को फिर से पहचाना जा सकता है, वे अधिक सुरक्षित हैं। – Marco

1

करते हैं या इस तरह आपके प्रश्नों का निर्माण नहीं है के बारे में टिप्पणी के अलावा ...

आप उद्धरण ठीक से बंद हो रहा नहीं कर रहे हैं।

$query = "SELECT * FROM . $strTable . where .....; //Double quote not closed. 

होना चाहिए:

$query = 'SELECT * FROM' . $strTable . 'where .....'; //Single quoted strings concatenated with variable. 

या

$query = "SELECT * FROM $strTable where ....."; //Variable inside double quoted string.