Vamos esclarecer uma coisa, você não está economizando tempo (ou tornando o código mais bonito) criando várias variáveis em uma única linha, é realmente hora de apertar o botão "enter" uma vez que você jogue fora seu ponto e vírgula.
A razão pela qual ninguém se preocupou em lhe dar uma resposta adequada é porque, bem, seu código é muito difícil de ler.
Você deve, para começar, começar estruturando melhor seu código, algo assim também deve ser considerado:
- Certifique-se de que algo foi postado, não presuma que $_POST['book'] existe.
- Mostre-nos todas as variáveis e funções que você está usando quando pede ajuda, mostrando os valores de $Hostname,$Username,$Password,$DatabaseName pode realmente ajudar.
- $PapierTableName? Basta defini-lo na consulta ou vincular o nome também à consulta.
- Estruture a consulta como uma string e prepare a string que contém a consulta.
- Está faltando um ponto e vírgula na consulta.
- Usar $rit[$i] é inútil, usar $rit[] =funcionará tão bem para anexar dados ao array.
- Dê uma olhada em utf8_encode, acho que você está complicando demais seu código.
- $ret =array_merge($ret, search($rit, 4, $catlist[$i])) está substituindo tudo que você faz, você tem que fazer $ret[] =array_merge($ret, search($rit , 4, $catlist[$i]));
Então combinado, algo assim será muito mais estruturado:
<?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);
}
}
?>
Não tenho certeza se isso resolverá seu problema, mas se não resolver, pelo menos deve ser muito mais fácil para você descobrir o que está errado.
A maioria dos erros que ocorrem são muito comuns e básicos, mas o código não estruturado os torna um inferno de encontrar.