2012-06-06 46 views
2

我有我想轉換成PHP數據對象的舊MySQL的代碼,但我不能在網絡上找到了如何可以做到這一點,任何幫助嗎?如何編寫代碼下面PDO

$num = mysql_num_rows($result = mysql_query($query)); 

while($row = mysql_fetch_array($result)) 
    { 

... 
} 

$ query是一個SELECT語句。

UPDATE:

我的代碼只顯示消息「找不到驅動程序」和其他notihng,它沒有顯示形式的代碼之類的東西。我在PDO中做錯了什麼?我知道數據庫,主機名,用戶名和密碼是正確的,所以它應該能夠顯示錶單,然後讓我連接到數據庫。

<?php 

session_start(); 

$hostname = 'localhost'; 
$username="xxx"; 
$password="xxx"; 
$database="mobile_app"; 

try { 
    $dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password); 


?> 

,,, //Form Code is in here 

<?php 
if (isset($_POST['submit'])) { 

$query = " 
SELECT * FROM Teacher t 
WHERE 
(t.TeacherUsername = '".mysql_real_escape_string($teacherusername)."') 
AND 
(t.TeacherPassword = '".mysql_real_escape_string($teacherpassword)."') 
"; 

$loged = false; 

foreach ($dbh->query($sql) as $row) 
    { 

,,,, //results for each row 



    } 

$dbh = null; 

} 

    } 
catch(PDOException $e) 
    { 
    echo $e->getMessage(); 
    } 
?> 

回答

2
try { 
    $dbh = new PDO($dsn, $user, $password); 
} catch (PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
} 

// PDOStatement is traversable, so you could use foreach. 
foreach ($dbh->query($sql) as $row) { 
    //... 
} 
+0

測試它,感謝和我會盡快給你 – user1394925

+0

嗨,只需要問1個小問題,是'$胸徑= NULL;'在腳本相當於底部mysql_close()? – user1394925

+0

@ user1438647:在腳本底部之前將任何內容設置爲「null」通常沒有多少意義。你不需要做任何事情。 – Ryan

3
$result = $link->query($query); # Replace $link with your database handle 
$rows = $link->fetchAll(PDO::FETCH_BOTH); 
$num = count($rows); 

foreach($rows as $row) { 
    # ... 
} 

&hellip;是直接等效。當然,你可能不會需要PDO::FETCH_BOTH(我建議PDO::FETCH_OBJ爲同一種類的清潔包的功能),你可能會想利用參數化查詢,在這種情況下,你會打電話prepare代替query ,然後綁定這些參數,然後調用​​來獲取結果。

您可能會發現the reference for PDOStatement幫助。

編輯:正如評論者指出,rowCount()是不是很大,即使是最直接等同。我用更好的東西更新了它。

+0

可能值得注意的是,在某些情況下,'PDOStatement :: rowCount()'不會返回正確的值。在這種情況下,需要執行'SELECT COUNT(*)'或'count(PDOStatement :: fetchAll())'。儘管如此,我有些懷疑OP是否需要這樣做。 –

+0

@KemalFadillah:哪些情況? (我希望你提到的情況並不常見,要不然我有相當一些修改做!) – Ryan

+0

所以你說這應該是這樣的:'$結果= $ dbh->準備($查詢); $ num = $ result-> rowCount(); while $($ row = $ result-> fetch(PDO :: FETCH_OBJ)){ #... }'$ dbh連接分貝 – user1394925

相關問題