【PHP】エラーが出たときのチェック項目
■絶対に覚えておくこと
・エラーメッセージが出た場合、そこをまず調べるが、その行が必ず間違っているというわけではない。
なので、その行を確認してミスがなかったら、他の箇所に間違っているところがないか調べる。
エラーの箇所だけにとらわれないようにする。
$が抜けている
スペルを間違えている
大文字と小文字を間違えている
$_POSTや$_GETは大文字でないと動かない。
記述していないコードがある
書籍のコードを書き写しているときにありがち。
既存のファイルをコピーして改変していると、一番最初に書くべきコードを書き忘れていたりする。
1つ前のコードに間違いがある
「'」「"」「.」「,」「;」といった記号が抜けていたり、逆に多いなど。
VScodeだと、1個前のコードに記号の抜けがある場合、次のコードにエラー表記が出るので特に注意する。
■フレームワーク(CakePHPなど)
大文字と小文字を間違えている
PHPと同じだが、ここを間違えると全く動かないので注意する。
$post = $this->Posts->get($id);
/ $変数 = $this->テーブル名->get($id)
$this->set('post', $post);
/ $this->set('変数名', 変数名に対応する値);
不要な$が付いている
$post = $this->$Posts->get($id);
$this->のあとは$は要らないので、正しい書き方は以下となる。
$post = $this->Posts->get($id);
CakePHP エラーの切り分け方
1. exitを処理の後に書いて、そこまでの記述でエラーが出るかどうかチェック。
エラーが出なければ、そこまでのコードに問題はないということなので、これで切り替えしていく。
2. 継承元が間違っていないか?
class UsersController extends AppController
{
・
・
・}
3. namespaceのパス
ここを間違えていると、違うファイルを読みにいってしまう。
同じ名前のコントローラがある場合など、気づきにくいので注意。
namespace App\Controller\Admin;
4. コンポーネントの読み込み宣言がされていない
たとえば、パスワードのハッシュ化をするメソッドを使うときは以下のコンポーネントの読み込みをする必要がある。
Model/Entity/Adminusers.php
use Cake\Auth\DefaultPasswordHasher;
■データベース操作
変数名を間違えている。
$select = $pdo->prepare("SELECT * FROM member LEFT JOIN post ON
member.user_id = post.user_id WHERE member.user_id = :id
ORDER BY created_at DESC LIMIT :start,:max ");
$stmt->bindValue(':id', $myId, PDO::PARAM_INT);
上記コードの場合、最初の変数を$selectにしているのに、次のbindValueの行は$stmtにしているので、そりゃ動かないよねという話。
この場合、
$select->bindValue(':id', $myId, PDO::PARAM_INT);
とすればOK。
この記事が気に入ったらサポートをしてみませんか?