私は2つの日付(開始と終了)をPHPスクリプトに渡し、それらをDBに追加するフォームを持っています。これの検証に問題があります。次のエラーが発生し続ける
正しくない数値が発生しました
これは私が次を使用するときです
date("d",$_GET['start_date']);
しかし、多くのサイトのアドバイスに従ってstrtotime()関数を使用すると、UNIXタイムスタンプの日付が1/1/1/1になります。正しい日付を取得する方法はありますか?
私は2つの日付(開始と終了)をPHPスクリプトに渡し、それらをDBに追加するフォームを持っています。これの検証に問題があります。次のエラーが発生し続ける
正しくない数値が発生しました
これは私が次を使用するときです
date("d",$_GET['start_date']);
しかし、多くのサイトのアドバイスに従ってstrtotime()関数を使用すると、UNIXタイムスタンプの日付が1/1/1/1になります。正しい日付を取得する方法はありますか?
回答:
これは、日付関数の2番目の引数として文字列を渡すためです。これは整数でなければなりません。
文字列の日付(文字列$ format [、int $ timestamp = time()])
英語のテキストによる日時の説明をUnixタイムスタンプ(整数)に解析するstrtotimeを試してください。
date("d", strtotime($_GET['start_date']));
public function __construct(int $someId....)
$_GET['start_date']
is not numeric is my betですが、では日付形式はサポートされていませんstrtotime
。あなたは、のために実行可能な形式に再フォーマットに日付が必要になりますのstrtotimeまたは使用組み合わせ爆発 / 関数mktime。
あなたが現在受け取っているフォーマットを投稿するのに十分親切であるなら、私はあなたに例を加えることができます。
このエラーは、24kb、886abなど、数字と英数字を組み合わせた文字を使用する変数を使用して計算を実行すると発生します...
次の関数でエラーが発生しました
function get_config_bytes($val) {
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
switch($last) {
case 'g':
$val *= 1024;
case 'm':
$val *= 1024;
case 'k':
$val *= 1024;
}
return $this->fix_integer_overflow($val);
}
アプリケーションは画像をアップロードしましたが、機能しませんでした。次の警告が表示されました:
解決策:このintval()
関数は、英数字データを含む変数の整数値を抽出し、同じ値を持つがintval()
関数を使用して整数に変換された新しい変数を作成します。これがコードです:
function get_config_bytes($val) {
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
$intval = intval(trim($val));
switch($last) {
case 'g':
$intval *= 1024;
case 'm':
$intval *= 1024;
case 'k':
$intval *= 1024;
}
return $this->fix_integer_overflow($intval);
}
これは私を大いに助けました-
$new_date = date_format(date_create($old_date), 'Y-m-d');
これは古い質問ですが、このメッセージが発生する可能性のある別の微妙な方法があります。これは、ドキュメントでかなりよく説明されています。
このscenerioを想像してみてください。
try {
// code that triggers a pdo exception
} catch (Exception $e) {
throw new MyCustomExceptionHandler($e);
}
そしてMyCustomExceptionHandler
大まかに定義されます:
class MyCustomExceptionHandler extends Exception {
public function __construct($e) {
parent::__construct($e->getMessage(), $e->getCode());
}
}
これは、Exception
クラスがコンストラクターの2番目のパラメーターに数値を期待しているため、実際にはカスタム例外ハンドラーで新しい例外をトリガーしPDOException
ますが、戻り値の型を動的に変更した可能性があります$e->getCode()
文字列にあります。
これを回避するには、次のようなカスタム例外ハンドラを定義します。
class MyCustomExceptionHandler extends Exception {
public function __construct($e) {
parent::__construct($e->getMessage());
$this->code = $e->getCode();
}
}
$_GET['start_date']
が含まれているかを投稿する必要があります。