0

A から B への郵便番号の最初の 5 文字を使用して「固定運賃」をチェックする次のコードがあります。

LE675FEが入力された場合、$full_post_code_a = LE675F;

基本的にやりたいのは、最初の 4 文字と 3 文字を使用してデータベースをチェックするループなので、$full_post_code_a = LE675F / LE675 and LE67

どうすればこれが可能になるのだろうか?

private static function checkFixedFarePC($post_codes) {

    self::$arr_postcodes = explode(",", $post_codes);

    // Get full postcode of Pickup

    $full_post_code_a = (self::$arr_postcodes[0]);

    // Get full postcode of Destination

    $full_post_code_b = (self::$arr_postcodes[1]);

    // Get first 5 characters of pickup & destination postcode

    $post_code_a = substr($full_post_code_a,0 ,5);

    $post_code_b = substr($full_post_code_b,0 ,5);

    // Pass postcodes to check if a fixed fare is possible

    return self::getFixedFare($post_code_a, $post_code_b);

}

次の関数に送信されます。

private static function getFixedFare($post_code_a, $post_code_b) {

$pdo = new SQL();
$dbh = $pdo->connect(Database::$serverIP, Database::$serverPort, Database::$dbName, Database::$user, Database::$pass);

try {

    $query =   "SELECT VehicleSystemId, Fare FROM tblfixedfares
                WHERE ShortPostCodeA = '$post_code_a'
                AND ShortPostCodeB = '$post_code_b'
                AND DayHalf = :day_half
                AND VehicleSystemId IN ('Car', '6B')";

    $stmt = $dbh->prepare($query);

    $stmt->bindParam(':day_half', self::$day_half, PDO::PARAM_STR);

    $stmt->execute();

    $result = $stmt->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_GROUP);

    $stmt->closeCursor();

    $dbh = null;

    return $result;

}

catch (PDOException $pe) {
    die("Error: " .$pe->getMessage(). " Query: ".$stmt->queryString);
}

どんな助けでも大歓迎です!

4

2 に答える 2

1

私はただ考えました、私はできる:

$post_code_c = substr($full_post_code_a,0 ,4);
$post_code_d = substr($full_post_code_a,0 ,3);

次に、これらをクエリに渡します。return self::getFixedFare($post_code_a, $post_code_b, $post_code_c);

次に、クエリを次のように変更します。

WHERE ShortPostCodeA = '$post_code_a' OR ShortPostCodeA = '$post_code_c' OR ShortPostCodeA = '$post_code_d

これを行うより良い方法があるかもしれませんが...

于 2012-11-30T13:56:15.163 に答える
0
 WHERE 
 ShortPostCodeA IN 
 ('{$post_code_a}','{$post_code_b}')
于 2012-11-30T14:23:39.117 に答える