Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Bind_result से संख्या सरणी को तोड़ती है php

आइए कुछ सीधा करें, आप एक पंक्ति में कई चर बनाकर किसी भी समय (या कोड को सुंदर बनाने) की बचत नहीं कर रहे हैं, यह वास्तव में "एंटर" बटन को हिट करने का समय है जब आप अपना अर्धविराम फेंक देते हैं।

किसी ने आपको उचित उत्तर देने की जहमत क्यों नहीं उठाई, इसका कारण यह है कि, आपका कोड वास्तव में पढ़ने में कठिन है।

शुरू करने के लिए, आपको अपने कोड को बेहतर तरीके से संरचित करके शुरू करना चाहिए, कुछ इस तरह से भी माना जाना चाहिए:

  • वास्तव में सुनिश्चित करें कि कुछ पोस्ट किया गया है, यह न मानें कि $_POST['book'] मौजूद है।
  • कृपया हमें उन सभी चरों और कार्यों को दिखाएं जिनका उपयोग आप सहायता मांगते समय कर रहे हैं, हमें $Hostname,$Username,$Password,$DatabaseName के मान वास्तव में मदद कर सकते हैं।
  • $PapierTableName? बस इसे क्वेरी में परिभाषित करें, या क्वेरी में नाम भी शामिल करें।
  • क्वेरी को एक स्ट्रिंग के रूप में संरचित करें, फिर वह स्ट्रिंग तैयार करें जिसमें क्वेरी है।
  • आप क्वेरी में अर्धविराम खो रहे हैं।
  • $rit[$i] का उपयोग करना व्यर्थ है, $rit[] =का उपयोग करना सरणी में डेटा जोड़ने के साथ उतना ही अच्छा काम करेगा।
  • utf8_encode पर एक नज़र डालें, मुझे लगता है कि आप अपने कोड को अधिक जटिल बना रहे हैं।
  • $ret =array_merge($ret, search($rit, 4, $catlist[$i])) जो कुछ भी आप करते हैं उसे ओवरराइट कर रहा है, आपको $ret[] =array_merge($ret, search($rit) करना होगा , 4, $catlist[$i]));

इतना संयुक्त, ऐसा कुछ अधिक संरचित होगा:

<?php
$postedBook = isset($_POST['book']) ? $_POST['book'] : false;

if($postedBook != false)
{
    $Hostname = 'localhost';
    $Username = 'root';
    $Password = '';
    $DatabaseName = 'dbName';

    $book = normalize_str(htmlentities(preg_replace('/\s+/',' ', $postedBook), ENT_QUOTES,'UTF-8'));
    $filecat = '../books/'.$book.'/'.$book.'.txt';
    $catlist = file($filecat, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

    $mysqli = new mysqli($Hostname, $Username, $Password, $DatabaseName);
    $stmt = $mysqli->stmt_init();

    $query = "SELECT * FROM PapierTable WHERE book = ? ORDER BY position ASC, title ASC;";
    $prepared = $stmt->prepare($query);

    if($prepared)
    {
        $stmt->bind_param('s', $book);
        $stmt->execute();
        $result = $stmt->bind_result($iden, $title, $price, $image, $description, $category, $enrat, $rating);
        if($result)
        {
            $rit = array();
            while($stmt->fetch())
            {
                $rit[] = array(
                    invert_str(html_entity_decode($title, ENT_QUOTES, 'UTF-8')),
                    $price,
                    invert_str(html_entity_decode($image, ENT_QUOTES, 'UTF-8')),
                    invert_str(html_entity_decode($description, ENT_QUOTES, 'UTF-8')),
                    invert_str(html_entity_decode($category, ENT_QUOTES, 'UTF-8')),
                    $enrat,
                    $rating
                );
            }
            $stmt->close();
            $count = count($catlist);
            $ret = array();
            for($i = 0; $i < $count ; $i++)
            {
                $ret[] = array_merge($ret, search($rit, 4, $catlist[$i]))
            }
            echo json_encode($ret);
        }
        else
        {
            file_put_contents('binderror.txt', $stmt->error);
        }
    }
    else
    {
        file_put_contents('connecterror.txt',$stmt->error);
    }
}
?>

मुझे यकीन नहीं है कि इससे आपकी समस्या ठीक हो जाएगी, लेकिन अगर ऐसा नहीं हुआ तो कम से कम आपके लिए यह पता लगाना आसान हो जाएगा कि क्या गलत है।

होने वाली अधिकांश त्रुटियां बहुत ही सामान्य और बुनियादी हैं, लेकिन असंरचित कोड उन्हें खोजने के लिए नरक बना देता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql घटना काम नहीं करती है

  2. मेरे नए कोड में एक गैर-ऑब्जेक्ट पर बाइंड_परम () फ़ंक्शन करें

  3. पहले से मौजूद रिकॉर्ड जांच के लिए तर्क लेकिन केवल अद्यतन प्रपत्र मानों के मामले में

  4. MySQL के लिए PDO तैयार स्टेटमेंट का उपयोग करके डेटा की एक सरणी से कई कॉलम में कई मान सम्मिलित करना

  5. % के साथ फ़ील्ड द्वारा MySQL ऑर्डर