Penggunaan fungsi WWW.FETCH-ID.COM pada PHP

Saya mencoba menjalankan beberapa pertanyaan untuk mendapatkan halaman informasi tentang beberapa gambar. Saya telah menulis sebuah fungsi

function get_recent_highs($view_deleted_images=false)
{
    $lower = $this->database->conn->real_escape_string($this->page_size * ($this->page_number - 1));
    $query = "SELECT image_id, date_uploaded FROM `images` ORDER BY ((SELECT SUM( image_id=`images`.image_id ) FROM `image_votes` AS score) / (SELECT DATEDIFF( NOW( ) , date_uploaded ) AS diff)) DESC LIMIT " . $this->page_size . " OFFSET $lower"; //move to database class
    $result = $this->database->query($query);
    $page = array();
    while($row = $result->fetch_assoc())
    {
        try
        {
            array_Push($page, new Image($row['image_id'], $view_deleted_images));
        }
        catch(ImageNotFoundException $e)
        {
            throw $e;
        }
    }
    return $page;
}

yang memilih halaman gambar-gambar ini berdasarkan popularitasnya. Saya telah menulis kelas Database yang menangani interaksi dengan database dan kelas Image yang menyimpan informasi tentang gambar. Ketika saya mencoba menjalankan ini, saya mendapatkan kesalahan.

Fatal error: Call to a member function fetch_assoc() on a non-object

$result adalah hasil mysqli, jadi saya bingung mengapa ini tidak berhasil.

Saya mencoba membangun aplikasi web menggunakan PHP dan saya menggunakan memcached untuk menyimpan data pengguna dari DB.

Misalnya katakanlah saya punya kode ini:

 $sql    = "SELECT * FROM users WHERE user_id = :user_id";
$stmt   = $this->_db->prepare($sql);
$result = $stmt->execute(array(":user_id" => $user_id));
$user   = $stmt->fetch(PDO::FETCH_ASSOC);

Saya tidak begitu yakin cara membaca variabel $user dan mengeluarkan data darinya. Saya harus dapat membaca kolom email dan kata sandi.

Saya berharap seseorang dapat menjelaskan kepada saya bagaimana ini bekerja.

Terima kasih

PDOStatement :: fetch mengembalikan baris dari set hasil. Parameter PDO::FETCH_ASSOC memberitahu PDO untuk mengembalikan hasilnya sebagai array asosiatif.

Kunci array akan cocok dengan nama kolom Anda. Jika tabel Anda berisi kolom 'email' dan 'kata sandi', array akan disusun seperti:

Array
(
    [email] => '[email protected]'
    [password] => 'yourpassword'
)

Untuk membaca data dari kolom 'email', lakukan:

$user['email'];

dan untuk 'kata sandi':

$user['password'];

Loop melalui array seperti Associative Array lainnya:

while($data = $datas->fetch( PDO::FETCH_ASSOC )){ 
     print $data['title'].'<br>'; 
}

atau

$resultset = $datas->fetchALL(PDO::FETCH_ASSOC);

echo '<pre>'.$resultset.'</pre>';

Metode

$user = $stmt->fetch(PDO::FETCH_ASSOC);

mengembalikan kamus . Anda cukup mendapatkan email dan kata sandi:

$email = $user['email'];
$password = $user['password'];

Metode lainnya

$users = $stmt->fetchall(PDO::FETCH_ASSOC);

mengembalikan daftar dari kamus

PDO:FETCH_ASSOC menempatkan hasilnya dalam array di mana nilai dipetakan ke nama bidangnya.

Anda dapat mengakses bidang name seperti ini: $user['name'].

Saya sarankan menggunakan PDO::FETCH_OBJ. Itu mengambil bidang dalam suatu objek dan Anda dapat mengakses seperti ini: $user->name

Untuk membaca hasilnya Anda bisa membacanya seperti array php sederhana.

Misalnya, mendapatkan name dapat dilakukan seperti $user['name'], dan sebagainya. Metode fetch(PDO::FETCH_ASSOC) hanya akan mengembalikan 1 Tuple tho. Jika Anda ingin mendapatkan semua tupel, Anda dapat menggunakan fetchall(PDO::FETCH_ASSOC). Anda bisa melalui array multidimensi dan mendapatkan nilai yang sama.

/ * Pola Desain "table-data gateway" * /

class Gateway
{
    protected $connection = null;

    public function __construct()
    {
        $this->connection = new PDO("mysql:Host=localhost; dbname=db_users", 'root', '');
    }

    public function loadAll()
    {
        $sql = 'SELECT * FROM users';
        $rows = $this->connection->query($sql);

        return $rows;
    }

    public function loadById($id)
    {
        $sql = 'SELECT * FROM users WHERE user_id = ' . (int) $id;
        $result = $this->connection->query($sql);

        return $result->fetch(PDO::FETCH_ASSOC);
        // http://php.net/manual/en/pdostatement.fetch.php //                   
    }
}

/ * Cetak semua baris dengan kolom 'user_id' saja * /

$gateway  = new Gateway();
$users    = $gateway->loadAll();

$no = 1;
foreach ($users as $key => $value) {
    echo $no . '. ' . $key . ' => ' . $value['user_id'] . '<br />';
    $no++;
}

/ * Cetak user_id = 1 dengan semua kolom * /

$user = $gateway->loadById(1);

$no = 1;
foreach ($user as $key => $value) {
    echo $no . '. ' . $key . ' => ' . $value . '<br />';
    $no++;
}

/ * Cetak user_id = 1 dengan kolom 'email dan kata sandi' * /

$user = $gateway->loadById(1);

echo $user['email'];
echo $user['password'];