Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Số từ bind_result phá vỡ mảng php

Hãy làm rõ điều gì đó, bạn sẽ không tiết kiệm thời gian (hoặc làm cho mã đẹp hơn) bằng cách tạo nhiều biến trong một dòng duy nhất, đã đến lúc nhấn nút "enter" khi bạn bỏ dấu chấm phẩy.

Lý do tại sao không ai thèm đưa ra câu trả lời xác đáng cho bạn là vì mã của bạn thực sự rất khó đọc.

Trước tiên, bạn nên bắt đầu bằng cách cấu trúc mã của mình theo cách tốt hơn, những thứ như thế này cũng nên được coi là tốt:

  • Thực tế, hãy đảm bảo rằng nội dung nào đó đã được đăng, đừng cho rằng $ _POST ['book'] tồn tại.
  • Vui lòng hiển thị cho chúng tôi tất cả các biến và hàm bạn đang sử dụng khi yêu cầu trợ giúp, việc hiển thị cho chúng tôi các giá trị của $ Hostname, $ Username, $ Password, $ DatabaseName có thể thực sự hữu ích.
  • $ PapierTableName? Chỉ cần xác định nó trong truy vấn hoặc gắn cả tên vào truy vấn.
  • Cấu trúc truy vấn dưới dạng một chuỗi, sau đó chuẩn bị chuỗi chứa truy vấn.
  • Bạn thiếu dấu chấm phẩy trong truy vấn.
  • Việc sử dụng $ rit [$ i] là vô nghĩa, việc sử dụng $ rit [] =sẽ hoạt động tốt khi thêm dữ liệu vào mảng.
  • Hãy xem utf8_encode, tôi nghĩ rằng bạn đang làm phức tạp mã của mình quá mức.
  • $ ret =array_merge ($ ret, search ($ rit, 4, $ catlist [$ i])) đang ghi đè mọi thứ bạn làm, bạn phải làm $ ret [] =array_merge ($ ret, search ($ rit , 4, $ catlist [$ i]));

Vì vậy, kết hợp lại, một cái gì đó như thế này sẽ có cấu trúc hơn nhiều:

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

Tôi không chắc liệu điều đó có khắc phục được sự cố của bạn hay không, nhưng nếu không thì ít nhất nó sẽ là cách dễ dàng hơn để bạn phát hiện ra điều gì sai.

Hầu hết các lỗi xảy ra đều rất phổ biến và cơ bản, nhưng mã không có cấu trúc khiến chúng rất khó tìm.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chèn dữ liệu trường ẩn vào cơ sở dữ liệu bằng php

  2. Tối ưu hóa truy vấn xếp hạng chậm

  3. Email Xác nhận Php không gửi

  4. Trợ giúp về thuật toán truy vấn MYSQL trong PHP

  5. Chia sẻ giá trị user_id giữa hai bảng MySql