2012-08-08 43 views
0

這是我想在面向對象的形式寫的原代碼..程序的PHP/MySQL到面向對象的問題

$posResult = mysql_query("SELECT MAX(position)+1 FROM todo"); 

     if(mysql_num_rows($posResult)) 
      list($position) = mysql_fetch_array($posResult); 

這是我在那裏....我想我需要bind_result ?另外,我有一個問題與mysql_fetch_array ...

if($stmt = $this->HH->Database->prepare("SELECT MAX(position)+1 FROM todo")) { 
     $stmt->execute(); 
     $stmt->store_result(); 

     if($stmt->num_rows != FALSE) { 
      list($position) = mysql_fetch_array($posResult); 
     } 
    } 

有人可以建議如何解決這個問題嗎?

+0

是'$ this-> HH-> Database' Mysqli or PDO? – drew010 2012-08-08 01:05:45

+0

新的mysqli($ server,$ user,$ pass,$ db); – Greg 2012-08-08 01:07:18

回答

1

看起來你正在轉向PDO,這很棒,它是一個更好的連接方式,但是你仍然試圖使用一些不起作用的老版本的mysql_*命令。雖然有多種方式來獲取數據,但是這是我最常使用的方法:

if($stmt = $this->HH->Database->prepare("SELECT MAX(position)+1 FROM todo")) { 
    $stmt->execute(); 

    $stmt->setFetchMode(PDO::FETCH_INTO, new yourClassName); 
    foreach($stmt as $yourClassObject) 
    { 
     $someVar=$yourClassObject->QueryColumnName; 
     // or 
     $this->someProperty=$yourClassObject->QueryColumnName; 
    } 
    } 

我做一般地具有與查詢的結果匹配類,所以我用FETCH_INTO,但你可以使用不同的方法,例如返回索引數組,關聯數組或其他。

+0

我其實並沒有打算轉到PDO ......我也沒有真正瞭解它。我意識到舊的mysql_命令不起作用。任何其他PDO方法的替代方案? – Greg 2012-08-08 02:30:32

+0

@Greg其實我認爲使用PDO比使用舊功能更容易。它可能不同,但靈活性非常驚人 - 如果你只是想直接運行簡單的查詢,它可以讓你做到這一點。 – Fluffeh 2012-08-08 03:24:37