Нека да разберем нещо, не спестявате време (или не правите кода по-красив), като създавате множество променливи в един ред, наистина е време да натиснете бутона „въвеждане“, след като изхвърлите точката и запетая.
Причината, поради която никой не си е направил труда да ви даде подходящ отговор, е, че вашият код е наистина труден за четене.
Като начало трябва да започнете, като структурирате по-добре кода си, нещо подобно също трябва да се обмисли:
- Всъщност се уверете, че нещо е публикувано, не предполагайте, че $_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);
}
}
?>
Не съм сигурен дали това ще реши проблема ви, но ако не го реши, би трябвало поне да ви бъде много по-лесно да разберете какво не е наред.
Повечето от грешките, които възникват, са много чести и основни, но неструктурираният код ги прави трудни за намиране.