【问题标题】:equivalent for while(myslqi_fetch_array($result)) for PDO [duplicate]等效于 PDO 的 while(myslqi_fetch_array($result)) [重复]
【发布时间】:2017-01-21 00:23:13
【问题描述】:

我正在将我的代码转换为 PDO,以使我的网站不那么容易受到攻击
这是我的代码,根据此处的另一篇文章,这应该可以工作:

$stmt = $handler->prepare("SELECT * FROM news ORDER BY date DESC LIMIT 5");
$run = $stmt->execute();
if(!$run){
    echo 'sorry';
}
while($row = $query->fetch(PDO::FETCH_ASSOC)){
    echo $row['title'];
  $article_id = $row['article_id'];
  $user_id = $row['user_id'];
  $title = $row['title'];
  $content = $row['content'];
  $date = $row['date'];
  $stmt2 = $handler->prepare("SELECT * FROM users WHERE id = :id");
  $stmt2->bindParam(':id',$id);
  $stmt2->execute();
  $row2 = $stmt2->fetch(PDO::FETCH_ASSOC);
  $user_name = $row2['username'];
  $title2 = str_replace(" ","-",$title);
  echo '<div class="row">
  <div class="col-lg-12"><h3 class="para"><a class="para" href="http://news.red-sec.net/article/'.$article_id.'/'.$title2.'">'.$title.'</a></h3>
  <p class="para">Written by: '.$user_name.'</p>
  </div>

我正在尝试回显 $row['title'];看看它是否有效,但它没有回显任何内容,所以我猜测某处有错误。

编辑:
它没有回声抱歉,所以我知道该语句正在运行...

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

    您正在对 $query 变量运行 fetch 方法。尝试在 $stmt 对象上运行它 像这样:

    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
      //your code here
    }
    

    【讨论】:

    • 我什至没有注意到哇...谢谢你,当我在我的电脑上时,你这家伙生病了
    • 除了这个答案 - 当您使用 select * 时,您需要 100% 确定 title 列存在并且您拼写正确。我知道这可能看起来很麻烦,但是您应该引用要检索的列的原因有很多 - 请参阅 stackoverflow.com/questions/321299/… 以获得这些列的良好列表
    • 我实际上需要表中的所有列以供以后使用。您的解决方案已解决,谢谢。我想我只是需要一双新鲜的眼睛
    猜你喜欢
    • 1970-01-01
    • 2014-01-20
    • 2015-10-12
    • 2012-08-22
    • 2016-07-07
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多