sql >> Base de Datos >  >> RDS >> Mysql

El número de bind_result rompe la matriz php

Aclaremos algo, no está ahorrando tiempo (o haciendo que el código sea más bonito) al crear múltiples variables en una sola línea, es hora de presionar el botón "ingresar" una vez que tira el punto y coma.

La razón por la que nadie se ha molestado en darte una respuesta adecuada es porque, bueno, tu código es muy difícil de leer.

Debería, para empezar, comenzar estructurando su código mucho mejor, algo como esto también debería ser considerado:

  • Asegúrate de publicar algo, no asumas que $_POST['libro'] existe.
  • Muéstranos todas las variables y funciones que estás usando cuando pidas ayuda, mostrándonos los valores de $Hostname,$Username,$Password,$DatabaseName realmente podría ayudar.
  • $PapierTableName? Simplemente defínalo en la consulta, o vincule el nombre también a la consulta.
  • Estructura la consulta como una cadena, luego prepara la cadena que contiene la consulta.
  • Falta un punto y coma en la consulta.
  • Usar $rit[$i] no tiene sentido, usar $rit[] =funcionará igual de bien al agregar datos a la matriz.
  • Eche un vistazo a utf8_encode, creo que está complejizando demasiado su código.
  • $ret =array_merge($ret, search($rit, 4, $catlist[$i])) está sobrescribiendo todo lo que haces, tienes que hacer $ret[] =array_merge($ret, search($rit , 4, $lista de gatos[$i]));

Entonces, combinado, algo como esto estará mucho más estructurado:

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

No estoy seguro de si eso solucionará su problema, pero si no fue así, al menos debería ser mucho más fácil para usted averiguar qué es lo que está mal.

La mayoría de los errores que ocurren son muy comunes y básicos, pero el código no estructurado los hace difíciles de encontrar.