ここで完全に道に迷ってしまいました... いくつかの入力を検証した後、Message
クラスのインスタンスを作成し、データベースにデータを挿入しようとしました:
// send message
$message = $this->model->build('message', true);
$message->insertMessage($uid, $user->user_id, $title, $message);
挿入方法は非常に簡単です。
// insert a new message
public function insertMessage($to_id, $from_id, $title, $body)
{
$sql = "INSERT INTO messages (to_id, from_id, title, body, create_date) VALUES
(:to_id, :from_id, :title, :body, NOW())";
$sth = $this->db->prepare($sql);
return $sth->execute([':to_id' => $to_id, ':from_id' => $from_id, ':title' => $title, ':body' => $body]);
}
ただし、送信時に空白のページが表示され、Apache エラー ログには次のように表示されます。
[Tue Jul 30 22:34:44 2013] [error] [client 127.0.0.1] PHP Catchable fatal error: クラス Framework\models\Message のオブジェクトを /var/www/p-lug/p の文字列に変換できませんでした-lug_lib/framework/models/Message.php の 18 行目、リファラー: https://p-lug.localhost/message/compose/4
18行目はreturn文を参照しているのですが、削除return
しても同じエラーになります。
このエラーに関する無数のリンクを読みましたが、私の例に当てはまる回答はないようです。オブジェクトを文字列に変換したり、結果を出力したりすることは決してありません。他のクラスとの挿入のための同様のコードは完全に機能します。実際、このコードは別の作業例からコピーして貼り付けたもので、変更されたのはテーブルとデータだけです。
var_dump()
渡されるすべての変数 on$this
とonを使用しまし$sth
た。すべてがチェックアウトされます。しかし、execute()
それは失敗します。ここで一体何が起こっているのですか?