从db PDO返回数组结果

时间:2016-04-12 08:13:20

标签: php mysql pdo

道歉应该被视为一个非常基本的问题。请注意我已经使用mysql_query方法进行了1000次编码,因此我很难进行切换,但我终于做到了。

我的第一个问题

我的第一个问题来自简单地返回选择语句列表

示例:我正在尝试执行:

$sql="Select *From members";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
  $name = $row['name'];
}

我已阅读以下SO问题,并尝试实施答案但未成功,

PDO equivalent of mysql_fetch_array

translation mysql_fetch_array to PDO::FETCH_NUM

我现在正在处理一本 PHP书本应该是&#34; 2015/16年度最好的一本&#34; 这本书说明以下关于上述问题< / em>

enter image description here

我再次尝试了这本书的推荐

<?php
$dsn ='mysql:localhost;dbname:myDB;';
$uname = 'root';
$pword = '';
$db = new PDO($dsn, $uname,$pword);
if($db){
  echo'Success';    
} else {
  echo'error';  
} 

$sql="SELECT * from members";
$results = $db->query($sql);
foreach($results as $result) {
  echo $result['name'];
}

上面的代码给了我一个信息,&#34;成功&#34;因此,我成功连接到我的数据库,但查询返回以下错误:

Invalid argument supplied for foreach()

我发现非常令人沮丧的是,我必须经历这么长的时间才能从简单的select声明返回结果,并且正在认真考虑回到过去的方式,在那里我将完成我的任务现在,我转向SO社区寻求帮助,最后一次尝试将其做对。任何帮助非常感谢。

1 个答案:

答案 0 :(得分:2)

我很惭愧发布这个,但我发现了问题。可能它可能在将来帮助某人。

查询数据库的代码很好。

问题在第1行中有以下内容:

$dsn ='mysql:localhost;dbname:myDB;';

应该阅读

$dsn ='mysql:host=localhost;dbname=myDB;';

If语句将始终返回echo success,即使您未连接,也请使用try/catch

吸取的教训: 始终从第1行检查您的代码