3
重複したエントリなどのMySQLエラーが発生した場合は、問題の原因となったフィールドの名前を取得する必要があります。私は次のようにしています:MySQLエラーパラメータを取得するには?
$err = $mysqli->error;
$errno = $mysqli->errno;
...
if ($errno == 1062)
{
$begin = strpos($err, "' for key '") + 11;
$end = strlen($err) - 1;
$arg = substr($err, $begin, $end - $begin);
}
したがって、$arg
は名前を格納します。これは、私が知る限り、エラーのフォーマットがバージョン間やデータベースからデータベースへと変わらないという保証はないので、これを行うには非常に強固な方法はありません。
フィールドの名前を取得するより直接的な方法はありますか?
これは問題です。私はストア全体のエラーメッセージを使用するか、正規表現で値を取得します。あなたはエラーコードによってどのようにエラー値を解析するかを知る必要があります。これは、新しいバージョンのSQLエンジンでエラーを変更できる場合の問題です。必要ならば、私は配列errorCode =>正規表現をどのように特定の値を取得するだろう。 – daremachine
なぜあなたはそれをしたいですか?健全に設計されたアプリケーションでは、名前を必要としません。同じ表に一意の索引が多数あるべきではありません。 –
@YourCommonSenseまあ、私は学生のテーブルを持っていると言っていますが、一意の学生ID、学校のe-サービスのユーザー名、電話番号、社会保障番号、電子メールなどは – user81993