sql >> Database teknologi >  >> RDS >> Mysql

Nummer fra bind_result bryder arrayet php

Lad os få noget på det rene, du sparer ikke nogen tid (eller gør koden smukkere) ved at oprette flere variabler på en enkelt linje, det er virkelig tid til at trykke på "enter"-knappen, når du smider dit semikolon ud.

Grunden til, at ingen har gidet at give dig et ordentligt svar, er fordi, ja, din kode er virkelig svær at læse.

Du bør til at begynde med starte med at strukturere din kode meget bedre, noget som dette bør også overvejes:

  • Sørg faktisk for, at noget er postet, antag ikke, at $_POST['bog'] eksisterer.
  • Vis os venligst alle de variabler og funktioner, du bruger, når du beder om hjælp. Vis os værdierne for $Hostname,$Username,$Password,$DatabaseName, kan faktisk hjælpe.
  • $PapierTabelnavn? Du skal blot definere det i forespørgslen, eller binde navnet også ind i forespørgslen.
  • Strukturér forespørgslen som en streng, og klargør derefter den streng, der indeholder forespørgslen.
  • Du mangler et semikolon i forespørgslen.
  • At bruge $rit[$i] er meningsløst, at bruge $rit[] =vil fungere lige så godt med at tilføje data til arrayet.
  • Tag et kig på utf8_encode, jeg tror, ​​du overkomplekserer din kode.
  • $ret =array_merge($ret, search($rit, 4, $catlist[$i])) overskriver alt, hvad du gør, du skal gøre $ret[] =array_merge($ret, search($rit) , 4, $catlist[$i]));

Så kombineret vil noget som dette være meget mere struktureret:

<?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);
    }
}
?>

Jeg er ikke sikker på, om det vil løse dit problem, men hvis det ikke gjorde det, burde det i det mindste være meget nemmere for dig at finde ud af, hvad der er galt.

De fleste fejl, der opstår, er meget almindelige og grundlæggende, men ustruktureret kode gør dem til et helvede at finde.




  1. Splitter du en meget stor streng med en brugerdefineret skilletegn?

  2. Indstil SQLAlchemy til at bruge PostgreSQL SERIAL til identitetsgenerering

  3. Opbygning af en Microsoft Access-database

  4. kontrol af brugerstatus (aktiv, inaktiv) på en webside