PHP / MySql / Variable循环?

时间:2012-11-30 13:42:20

标签: php mysql pdo

我有以下代码,使用从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);
}

非常感谢任何帮助!

2 个答案:

答案 0 :(得分: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

虽然可能有更好的方法来做到这一点......

答案 1 :(得分:0)

 WHERE 
 ShortPostCodeA IN 
 ('{$post_code_a}','{$post_code_b}')