7

我曾经做过 :

$resource = mysql_query("SELECT * FROM table WHERE id = " . $id);
$user = mysql_fetch_assoc($resource);
echo "Hello User, your number is" . $user['number'];

我读到 mysql 语句都已弃用,不应使用。

我怎么能用 PDO 做到这一点?

第一行是:

$stmt = $db->prepare("SELECT * FROM table WHERE id = " . $id); // there was an aditional double quote in here.
$stmt->execute(array(':id' => $id));

mysql_fetch_assoc() 函数呢?

我正在使用 php

4

5 回答 5

8

您可以使用(PDO::FETCH_ASSOC)常量
用法将是 while ($res = $stmt->fetch(PDO::FETCH_ASSOC)){ .... }
这里的参考(准确的文档):http ://www.php.net/manual/en/pdostatement.fetch.php

于 2013-05-03T16:44:25.237 回答
1

手册中有详细记录:http: //php.net/manual/en/pdostatement.fetchall.php

例如:

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Fetch all of the remaining rows in the result set */
print("Fetch all of the remaining rows in the result set:\n");
$result = $sth->fetchAll();
print_r($result);
?>
于 2013-05-03T16:41:27.887 回答
1

这里有一本很好的手册。

从中您可以了解不需要在每次提取时显式设置提取模式的内容。
...甚至使用 PDO,您根本不需要数组来回显一个数字:

$stmt = $db->prepare("SELECT number FROM table WHERE id = ?");
$stmt->execute(array($id));
echo "Hello User, your number is".$stmt->fetchColumn();
于 2013-05-03T16:53:21.670 回答
0

这是一个很好的教程: http ://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

<?php
   $db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
   $stmt = $db->query("SELECT * FROM table");
   $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
   var_dump($results);
?>
于 2013-05-03T16:49:03.600 回答
-2

您可以使用 PDO::FETCH_ASSOC 来做同样的事情。

$stmt = $db->prepare("SELECT * FROM table WHERE id = :id");
$stmt->execute(array(':id' => $id));
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();
while($record = $stmt->fetch()) {
   //do something
}

你可以在这里找到一个很好的教程

于 2013-05-09T05:48:20.327 回答