2011-03-24 84 views
1

我已經使用了一段時間,但自此之後升級到PDO而不是mysql查詢。但我似乎無法得到這個特定的片段工作。幫助將此mysql查詢轉換爲PDO查詢

$query = mysql_query ($sql) or die (mysql_error()); 
while ($records = @mysql_fetch_array ($query)) { 
    $alpha[$records['alpha']] += 1; 
    ${$records['alpha']}[$records['id_clients']] = array(
     $records['first_name'],  //item[0] 
    ); 
} 

我已經試過這

while ($records = $this->db->fetch_row_assoc($sql)) { 
    $alpha[$records['alpha']] += 1; 
    ${$records['alpha']}[$records['id_clients']] = array(
     $records['first_name'],  //item[0] 
    ); 
} 

和我的PDO的代碼是

public function query($statement) 
    { 
     return self::$PDO->query($statement); 
    } 
public function fetch_row_assoc($statement) { 
    self::$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     try 
     { 
      $stmt = self::$PDO->query($statement); 
      $result = $stmt->fetch(); 
      return $result; 
     }catch(PDOException $e){ 
      echo $e->getMessage(); 
     } 
     return false; 
     //return self::$PDO->query($statement)->fetch(PDO::FETCH_ASSOC); 

    } 

查詢功能的工作原理,但我已經介紹了我fetch_row_assoc功能,希望我可以做同樣的與mysql_fetch_asso的東西。

$sql = "SELECT 
        SUBSTRING(`last_name`, 1, 1) AS alpha, 
        SUBSTRING(`middle_name`, 1, 1) AS subMiddleName, 
        `id_clients`, 
        `type`, 
        `first_name`, 
        `middle_name`, 
        `last_name`, 
        `address`, 
        `primary_number`, 
        `secondary_number`, 
        `home_number`, 
        `office_number`, 
        `cell_number`, 
        `fax_number`, 
        `ext_number`, 
        `other_number`, 
        `comments` 
       FROM `clients` 
       WHERE `user_id` = 1 
       AND `is_sub` = 0 
       AND `prospect` = 1 
       ORDER BY `last_name`"; 

回答

0

試試這個:

public function query($statement) 
    { 
     return self::$PDO->query($statement); 
    } 
public function fetch_row_assoc($statement) { 
    self::$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     try 
     { 
      $stmt = self::$PDO->query($statement); 
      $stmt->setFetchMode(PDO::FETCH_ASSOC); 
      $result = $stmt->fetch(); 
      return $result; 
     }catch(PDOException $e){ 
      echo $e->getMessage(); 
     } 
     return false; 
    } 
+0

我的問題是,它需要時間超過60秒做查詢和超時我有錯誤味精服務器上:致命錯誤:60秒的最長執行時間超過在/var/www/vhosts/foo.bar/httpdocs/library/classes/database.class.php在線115 – Eli 2011-03-24 17:39:18

+0

你可以發佈實際查詢嗎?我不認爲超時發生是因爲PHP代碼。 – 2011-03-24 17:43:56

+0

我更新了我的查詢 – Eli 2011-03-24 17:56:16