【问题标题】:SQL PDO - SELECT another table inside "while" loop of the first SELECTSQL PDO - 在第一个 SELECT 的“while”循环中选择另一个表
【发布时间】:2017-10-15 12:03:33
【问题描述】:

我需要使用 PDO 方法执行“SELECT inside SELECT”,因为我需要来自第一个的数据

SELECT (`$result('nom')`) 

第二个。

我没有收到任何 php 错误,但页面重定向到“404 File Not Found”,SQL 语法似乎正确。我怎么了?

这是我的代码:

<?php

include("../access.php");
session_start();
$date = "tableau_suivi_".date("d-m-Y").".csv";
$table_echo = array();

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename='.$date.'');

header('Pragma: no-cache');
header('Expires: 0');

$csv_file = fopen('php://output', 'w');

fputs($df, "\xEF\xBB\xBF" );
fwrite($csv_file, "Nom ; Prenom ; RSCA 1 ; RSCA 2 ; RSCA 3\n");

$sql='SELECT * FROM membre WHERE prof = 0';
$nb = $bdd->query($sql);

while($result = $nb->fetch()){

  $sql1='SELECT nom_eval FROM rsca_valides WHERE nom_etu = "'.$result('nom').'" AND numero = 1';
  $nb1 = $bdd->query($sql1);
  if($res1 = $nb1->fetch()){
    $eval1 = $res1('nom_eval');
  }

  $sql2='SELECT nom_eval FROM rsca_valides WHERE nom_etu = "'.$result('nom').'" AND numero = 2';
  $nb2 = $bdd->query($sql2);
  if($res2 = $nb2->fetch()){
    $eval2 = $res2('nom_eval');
  }

  $sql3='SELECT nom_eval FROM rsca_valides WHERE nom_etu = "'.$result('nom').'" AND numero = 3';
  $nb3 = $bdd->query($sql3);
  if($res3 = $nb3->fetch()){
    $eval3 = $res3('nom_eval');
  }

  $line = $result['nom'].";".$result['prenom'].";".$eval1.";".$eval2.";".$eval3."\n";
  fwrite($csv_file, $line);
}


fclose($csv_file);

?>

没有$sql1$sql2$sql3,它运行良好。我的目标是在每一行生成一个包含 nom、prenom、$res1('nom_eval')、$res2('nom_eval') 和 $res3('nom_eval') 的 CSV 文件。

【问题讨论】:

  • SQL 语法问题!= 404 问题。您没有向我们展示导致问题的代码。
  • “顺便说一句,谢谢你的反对” - 你不应该总是认为问题中的人反对你。包括那些试图帮助你的人。再说一次;检查真正的错误。祝你项目顺利 :-) @hopesfall
  • Toé tu connais ça mon chum @JayBlanchard
  • @JayBlanchard 所以请添加您的答案,我很乐意投票并将其标记为最佳答案。再次感谢您。
  • @hopesfall 因为您似乎正在使用 PDO,如果您还没有使用 php.net/manual/en/pdo.error-handling.php,将会对您有所帮助,PHP 的错误报告 php.net/manual/en/function.error-reporting.php 也会对您有所帮助 :-)

标签: php sql select pdo while-loop


【解决方案1】:

$eval1 = $res1('nom_eval'); 既不是数组也不是对象项。它应该是$eval1 = $res1['nom_eval'];$eval1 = $res1-&gt;nom_eval;,具体取决于您的获取方法。

这适用于所有查询结果。例如:

 $sql1='SELECT nom_eval FROM rsca_valides WHERE nom_etu = "'.$result['nom'].'" AND numero = 1';

【讨论】:

  • 爱一个幸福的结局。
  • @Fred-ii- 迟到总比不到好 :')
  • @hopesfall 好吧,还不算太晚 ;-) 干杯
猜你喜欢
  • 1970-01-01
  • 2019-01-26
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 2011-05-03
相关资源
最近更新 更多