質問: "このメールアドレスはすでに利用されております。"; } ``` 追記 このエラーの原因がわかりました。下記のコードはsqliでデータベース接続をした場合にしか適応できないようでした。 では、これをPDOで書き換えた場合、どこを変化させることで実行可能になるのでしょうか? 分かる方おられましたら回答よろしくお願いします。
回答: new PDO にてデータベースの接続点を確保しているのにも関わらず、 別概念別系統の関数(mysqli_real_escape_string, mysqli_query, mysqli_error, mysqli_fetch_assoc)を使っているのが、 そもそもの間違いです。 PHPでデータベースに接続するときのまとめ - Qiita を一読して、PDO接続中にmysqli_*系関数を使わない記述に直してください。 PDO接続の方が好まれていて、これから開発するなら絶対PDOを使うべきです。 PHP: どの API を使うか - Manual mysqli_*系は、古いシステムがmysql_*で書かれているのを 現行サーバー上で最小限の変更で動かすためにあるような面があるので 今更習得しなくて良いと思います。 また、SQL文をsprintfで出力していますが、 これもprepare()→bindValue()→execute()の三段構えで行えばやらずにすみます。 PDO::prepare → PDOStatement::bindValue → PDOStatement::execute の3ステップでクエリを実行する ちなみに、メールアドレスを正規表現で検査するのは、 RFC準拠のやり方を徹底しようとすると変な話 (docomoはRF2822非準拠とか) になるため、現実解としてのやり方があります。 404 Blog Not Found:「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ メールアドレスを表す現実的な正規表現 - Qiita 今時のメールアドレス正規表現 - Qiita 要は、テスト用メールアドレスをどこまで実際の使われているものでテストするか次第で、 ここまでの想定でテストしたのだから良しとする、というのを明確にしておけばよいかと。