2016-04-04 2 views
-3

私は単にUTF8データをデータベースに挿入して取得しようとしていましたが、実際にはうんざりしています。 1つのエラーが表示されているだけです。ブール値でのPDOメンバ関数

ここに私のtable structureと私は間違っていると思います。

Fatal error: Call to a member function fetchAll() on boolean

ここにソースコードがあります。私はこの問題について検索しましたが、これらはこの状況では機能しません。私はすべてを試して、働いていないので、これを重複としてマークしないでください。それが私が投稿した理由です。前もって感謝します。

<?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> 
+0

テーブルは 'テスト'ではなく 'テキスト 'ですか?そして 'test'の代わりに' text'の列を使って 'texts'に挿入しようとしていますか? – Jon

+0

o.O!プロありがとう!私が見ていたところで私は知らない!私はこの記事に従ったが、私は見たことがなかった! [だから事実はここにある](http://stackoverflow.com/questions/35412343/php-error-call-to-a-member-function-fetchall-on-boolean) –

答えて

0

主に、このような状況が誤植のために最大限生成されました!だからこの問題についての投稿をする前に。データベースのタイプミスと設定を確認してください。

1

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

それはfalse代わりのPDOStatementを返すいくつかの理由のためので、チェーンを外し、query()の結果を確認してください。一般的には

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

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

クエリを想定してはならないです成功したので、続行する前に必ずエラーをチェックしてください。

関連する問題