Mari kita luruskan, Anda tidak menghemat waktu (atau membuat kode lebih cantik) dengan membuat beberapa variabel dalam satu baris, ini benar-benar waktu untuk menekan tombol "enter" setelah Anda membuang titik koma Anda.
Alasan mengapa tidak ada yang mau memberi Anda jawaban yang tepat adalah karena kode Anda sangat sulit dibaca.
Anda harus, untuk memulai, mulai dengan menyusun kode Anda dengan cara yang lebih baik, hal seperti ini juga harus dipertimbangkan:
- Pastikan ada sesuatu yang diposting, jangan berasumsi bahwa $_POST['book'] ada.
- Tolong tunjukkan kepada kami semua variabel dan fungsi yang Anda gunakan saat meminta bantuan, menunjukkan kepada kami nilai $Hostname,$Username,$Password,$DatabaseName mungkin benar-benar membantu.
- $PapierTableName? Cukup definisikan dalam kueri, atau ikat juga namanya ke dalam kueri.
- Struktur kueri sebagai string, lalu siapkan string yang menampung kueri.
- Anda kehilangan titik koma dalam kueri.
- Menggunakan $rit[$i] tidak ada gunanya, menggunakan $rit[] =akan berfungsi dengan baik dengan menambahkan data ke array.
- Coba lihat utf8_encode, menurut saya kode Anda terlalu rumit.
- $ret =array_merge($ret, search($rit, 4, $catlist[$i])) sedang menimpa semua yang Anda lakukan, Anda harus melakukan $ret[] =array_merge($ret, search($rit , 4, $catlist[$i]));
Jadi jika digabungkan, hal seperti ini akan jauh lebih terstruktur:
<?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);
}
}
?>
Saya tidak yakin apakah itu akan memperbaiki masalah Anda, tetapi jika tidak, setidaknya akan lebih mudah bagi Anda untuk mengetahui apa yang salah.
Sebagian besar kesalahan yang terjadi sangat umum dan mendasar, tetapi kode yang tidak terstruktur membuatnya sulit ditemukan.