2013-02-24 83 views
1

我在老“的mysql_query”的mysql_query到PDO

$query = mysql_query("SELECT defe FROM information WHERE term = 1"); 
$fetch = $db->fetch_array($query); 
print_r($fetch); 

我想这种转变从数据库中检索信息的PDO方式下面的代码。我尝试以下(没有工作 - 不显示任何结果):

$query = $db->prepare('SELECT defe FROM information WHERE term = 1'); 
$fetch = $query->fetch(); 
print_r($fetch); 

连接到数据库的成立以及存储在$db变量(只PDO)。

+0

请别只通过猜测切换,但你在做什么读了。 – PeeHaa 2013-02-24 16:45:34

+0

@PeeHaa我以为prepare()是PDO中必需的东西。这就是为什么我没有删除它。 – shnisaka 2013-02-24 17:30:01

+2

这就是我正在谈论的猜测;-) – PeeHaa 2013-02-24 17:31:39

回答

9

你必须execute查询

$query = $db->prepare('SELECT defe FROM information WHERE term = 1'); 
$query->execute(); 
$fetch = $query->fetch(); 
print_r($fetch); 

,因为你不使用你所查询的任何参数

$query = $db->query('SELECT defe FROM information WHERE term = 1'); 
$fetch = $query->fetch(); 
print_r($fetch); 
+4

或使用'$ db-> query()'代替。 http://www.php.net/manual/en/pdo.query.php(我不主张使用未转义的值,但他没有在这里使用任何变量) – mpen 2013-02-24 07:58:50

+0

@Mark和穆萨谢谢..我感谢您的帮助。 – shnisaka 2013-02-24 08:05:44

2

你可以简单地做您还可以使用PDO::query

$query = $db->query('SELECT defe FROM information WHERE term = 1'); 
$result = $query->fetch(); 
print_r($result); 

但是,如果您想准备(可能出于安全原因),您需要执行它。

因此,这将是

$query = $db->prepare('SELECT defe FROM information WHERE term = 1'); 
$query->execute(); 
$result = $query->fetch(); 
print_r($result); 
+0

我是这个PDO的初学者..我不知道做什么准备..我从其他地方复制了代码并开始研究它:(这就是我如何学习大声笑 – shnisaka 2013-02-24 08:01:39

+0

然后你最好学习准备... .http://php.net/manual/en/pdo.prepare.php ....因为它们非常有用 – 2013-02-24 08:03:09

+1

@shnisaka:“prepare”本质上是将查询发送给MySQL服务器,然后编译它(准备好它执行“是实际导致它运行并获取数据并将其返回给PHP脚本的原因。此外,你可以在你准备好的查询中使用变量(使用'?'或':myvar'),然后你然后可以通过将一个[关联]数组传递给'execute'方法来进行替换,因为它是安全且快速的(特别是在多次运行同一查询时),所以这是首选方法。 – mpen 2013-02-24 18:44:51