1

私は現在、小さくてシンプルな紹介システムを構築しています。ただし、1人のユーザーが持っている紹介の数を返すのに問題があります。新しいユーザーが登録すると、「referid」という列に格納され、そこにあるIDは、そのユーザーを参照したユーザー名のIDに対応します。

ただし、そのユーザーのIDが「referid」列に記載されている回数を見つけてエコーしようとすると、次のエラーが発生します。

Catchable fatal error: Object of class PDOStatement could not be converted to string in /home/refined/public_html/refer.php on line 30

実際に何が原因なのか理解できません。私は簡単なグーグルをしました、そして、私が見ることができたすべては、PDOが文字列か何かと互換性がないということでした。私はこれまでPHPとMYSQLを一緒に使用したことがないので、PDOを「使用しない」方法がわかりません。

<?php
$checknumber = $odb -> prepare("SELECT COUNT('referid') FROM `users` WHERE `ID` = :ID");
$checknumber -> execute(array(':ID' => $_SESSION['ID']));
echo($checknumber);
?>

どんな助けでも大歓迎です。

4

1 に答える 1

5

コードを分析してみましょう:

$checknumber = $odb -> prepare("SELECT COUNT('referid') FROM `users` WHERE `ID` = :ID");

...ここで、PDO :: prepare()は次のように定義されます。

PDOStatement PDO :: prepare(string $ statement [、array $ driver_options = array()])

したがって、オブジェクトを返します。しかし、2行後、オブジェクトを印刷しようとします。

echo($checknumber);

PDOStatementマニュアルの使用例のいずれかを確認すると、クエリ結果を抽出するためのメソッドの1つを呼び出す必要があることがわかります。例:

<?php
/* Execute a prepared statement by passing an array of values */
$sql = 'SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));
$red = $sth->fetchAll();

更新:さらに2つのリンク:

于 2012-11-22T17:40:18.597 に答える