1

このクエリ:payment_date BETWEEN "old date" AND "new date"新しい日付の前に古い日付を書き込んだ場合にのみ成功します。クエリの場合にそれを機能させる方法はpayment_date BETWEEN "new date" AND "old date"?ユーザーが最初に新しい日付を入力してから、古い日付のみを入力する場合があるためです。コード例:

$sql = "SELECT customer_name, phone_number, address FROM sale 
        WHERE seller_id=? && $search_by  LIKE ? && payment_date BETWEEN ? AND ?";
$q = $conn->prepare($sql);
$result = $q->execute(array($userid, "%".$search_value."%", $oldPaymentDate, $newPaymentDate));
4

1 に答える 1

2

常にユーザー入力を検証し、同時に日付を比較して、次のように正しい順序になっていない場合は入れ替えます。

$date1 = new DateTime($newPaymentDate);
$date2 = new DateTime($oldPaymentDate);

if($date1 < $date2) list($newPaymentDate,$oldPaymentDate)=array($oldPaymentDate,$newPaymentDate);
于 2012-04-29T09:58:34.557 に答える