2015-07-20 86 views
0

Iam将我的旧代码(以多种方式进行调优)带入带有PDO的新标准。 问题是,我没有得到任何回报,没有错误信息,没有任何东西。 我的代码的作用如下:对数据库进行查询,如果有任何结果($ resultado),它会在数组中创建数据的顺序。 可以请别人给我一个帮助吗? 我尝试了数组的方式和对象的方法,没有甜甜圈:/如何从旧的查询PHP到使用PDO准备好的语句进行查询PHP

旧代码:

$sql_code = 
    "SELECT news_id, news_title, news_date, news_resume 
    FROM news 
    WHERE news_show = 'S' 
    ORDER BY news_date DESC 
    "; 

    $result = mysql_query($sql_code); 

    if ($result) { 
    $rows = mysql_num_rows($result); 
     for ($i=0; $i<$rows; $i++) { 
     $aID[]  = mysql_result($result, $i, "news_id"); 
     $aTitle[] = mysql_result($result, $i, "news_title"); 
     $aDate[] = mysql_result($result, $i, "news_date"); 
     $aResume[] = mysql_result($result, $i, "news_resume"); 
     } 
    } 
?> 

新的代码,不工作:

try 
     { 
      $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpasswd); 
      $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $stmt = $dbh->prepare("SELECT news_id, news_title, news_date, news_resume 
            FROM  news 
            WHERE news_show = :newsS 
            ORDER BY news_date DESC"); 

      $stmt->execute(array('newsS' => 'S')); 

      while ($sql_code = $stmt->fetchall(PDO::FETCH_ASSOC)) 
      { 
       $result = mysql_query($sql_code); 
      } 

     } 
     catch(PDOException $e) 
     { 
      echo "Error:". $e->getMessage(); 
     } 

    $result = mysql_query($sql_code); 

    if ($result) 
    { 
    $rows = mysql_num_rows($result); 
     for ($i=0; $i<$rows; $i++) 
     { 
     $aID[]  = mysql_result($result, $i, "news_id"); 
     $aTitle[] = mysql_result($result, $i, "news_title"); 
     $aDate[] = mysql_result($result, $i, "news_date"); 
     $aResume[] = mysql_result($result, $i, "news_resume"); 
     } 
    } 
?> 
+2

简单:你在混合MySQL API。你不能这样做。使用连接中的同一个查询。没有灰色地带。尽管你可以喝朗姆酒和可乐。 –

+1

我为up/title – Drew

+0

加上'fetchall'应该有一个大写A.现在谁有球提交答案?编辑:*你怎么样山姆?* - @JayBlanchard - grin –

回答

0

如果你使用的PDO,你不要调用任何mysql_XXX函数,您必须对所有内容使用PDO方法。

$stmt->fetchAll()返回结果的所有行。要处理它,只需使用foreach循环。

try 
{ 
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpasswd); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $dbh->prepare("SELECT news_id, news_title, news_date, news_resume 
          FROM  news 
          WHERE news_show = :newsS 
          ORDER BY news_date DESC"); 

    $stmt->execute(array('newsS' => 'S')); 
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC); 
    foreach ($result as $row) { 
     $aId[] = $row['news_id']; 
     $aTitle[] = $row['news_title']; 
     $aDate[] = $row['news_date']; 
     $aResume[] = $row['news_resume']; 
    } 
} 
catch(PDOException $e) 
{ 
    echo "Error:". $e->getMessage(); 
} 
+0

谢谢!正是这样!我不是一个懒惰的人,因为有趣的评论建议我是,我只是想学习!社区需要更多像你这样的人!你是对的! –