Fungsi anggota PDO di Boolean

Saya baru saja mencoba memasukkan data UTF8 ke dalam database dan mengambilnya tetapi ada sesuatu yang benar-benar kacau! Itu hanya menampilkan satu kesalahan.

Ini struktur tabel dan menurut saya tidak ada yang salah.

Kesalahan fatal: Memanggil fungsi anggota FetchAll() pada boolean

Berikut adalah kode sumber. Saya sudah mencari tentang masalah ini tetapi ini tidak berhasil dalam situasi ini. Tolong jangan tandai ini sebagai duplikat karena saya sudah mencoba semuanya dan tidak berhasil, jadi itu sebabnya saya memposting. Terima kasih sebelumnya.

 <?php

error_reporting(E_ALL);
ini_set('display_errors', true);

header('Content-Type: text/html; charset=utf-8');

$pdo = new PDO('mysql:dbname=ourcms;host=localhost', 'root', '',
               array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

if (!empty($_POST['text'])) {
    $stmt = $pdo->prepare('INSERT INTO `texts` (`text`) VALUES (:text)');
    $stmt->execute(array('text' => $_POST['text']));
}

$results = $pdo->query('SELECT * FROM `texts`')->fetchAll(PDO::FETCH_ASSOC);

?>
<!DOCTYPE html>

<html>
<head>
    <title>UTF-8 encoding test</title>
</head>
<body>

<h1>Display test</h1>

<p>
A good day, World!<br>
Schönen Tag, Welt!<br>
Une bonne journée, tout le monde!<br>
يوم جيد، العالم<br>
좋은 일, 세계!<br>
Một ngày tốt lành, thế giới!<br>
こんにちは、世界!<br>
</p>

<h1>Submission test</h1>

<form action="" method="post" accept-charset="utf-8">
    <textarea name="text"></textarea>
    <input type="submit" value="Submit">
</form>

<?php if (!empty($_POST['text'])) : ?>
    <h2>Last received data</h2>
    <pre><?php echo htmlspecialchars($_POST['text'], ENT_NOQUOTES, 'UTF-8'); ?></pre>
<?php endif; ?>

<h1>Output test</h1>

<ul>
    <?php foreach ($results as $result) : ?>
        <li>
            <pre><?php echo htmlspecialchars($result['text'], ENT_NOQUOTES, 'UTF-8'); ?></pre>
        </li>
    <?php endforeach; ?>
</ul>

</body>
</html>

person Computer Lover    schedule 04.04.2016    source sumber
comment
Meja Anda tests bukan texts? Dan Anda mencoba memasukkan ke texts dengan kolom text bukannya test?   -  person Jon    schedule 04.04.2016
comment
o.O! Terima kasih profesional! Ke mana aku mencari, aku tidak tahu! Saya mengikuti posting ini tetapi tidak ada yang saya lihat! Jadi faktanya ada di sini   -  person Computer Lover    schedule 04.04.2016


Jawaban (2)


$hasil = $pdo->query('PILIH * DARI texts')->fetchAll(PDO::FETCH_ASSOC);

Hapus rantai dan periksa hasil query() karena karena beberapa alasan ia mengembalikan false bukannya PDOStatement:

Return Values 
PDO::query() returns a PDOStatement object, or FALSE on failure.

https://secure.php.net/manual/en/pdo.query.php

Secara umum, Anda tidak boleh menganggap kueri berhasil, jadi selalu periksa kesalahan sebelum melanjutkan.

person Marcin Orlowski    schedule 04.04.2016

terutama situasi ini dibuat berkali-kali karena kesalahan ketik! Jadi sebelum membuat postingan apapun tentang masalah ini. periksa kesalahan ketik dan konfigurasi database Anda.

person Computer Lover    schedule 04.04.2016