php - 在 PHP/Postgresql WHILE 循环中设置基于数据库字段的条件

标签 php postgresql jpgraph

我有一个部分解决方案,但我对如何在 while 循环中根据记录字段最好地设置条件感到困惑?我试过“IF”,但在 switch/case 上更进一步。 我将 jpgraph 与 PHP/Postgresql 一起使用,并设置了一个开关以根据记录类型字段“rectype”格式化甘特图。在我的测试代码中,“rectype”可以是“NORMAL”或“GROUP”。 该查询确实输出表中的所有 7 条记录(使用 pgadmin3 测试),但甘特图仅输出 7 条表记录中的前 6 条,并且条形格式应用于前一条记录 - 在我的测试用例中,记录 4 具有“rectype”字段设置为“GROUP”,但“GROUP”格式应用于记录 3。

$sql = "SELECT activity, start, due, rectype, title, FROM activity LEFT JOIN project ON activity_projectid = projectid ORDER BY activity_projectid, start";
$result = pg_query($sql);

// Add data to gantt
$i = 0;
while($act = pg_fetch_assoc($result)) {
 $type = pg_fetch_result($result,"rectype");
 switch($type) {  
 case "GROUP":  
    $data = new GanttBar ($i,array($act['activity'],$act['title']),$act['start'],$act['due']);
    $data->SetPattern(BAND_SOLID,'black');
 break;  
 case "NORMAL":  
    $data = new GanttBar ($i,array($act['activity'],$act['title']),$act['start'],$act['due']);
    $data->SetPattern(BAND_RDIAG,'red');
 break;
 }
$graph->Add($data);
$i++;
}

最佳答案

您不能将 pg_fetch_assocpg_fetch_result 混合使用。你应该使用:

while($act = pg_fetch_assoc($result)) {
    $type = $act['rectype'];

关于php - 在 PHP/Postgresql WHILE 循环中设置基于数据库字段的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27075052/

相关文章:

php - fatal error : Call to undefined function pg_connect()

database - Postgres 长时间运行的事务在父分区表上持有锁

PHP - 查询空值

php - 隐藏除索引之外的每个页面上的 div

php - 如何通过 AJAX 请求发布包含特殊字符(例如 '&' 特别)的长字符串?

php - Doctrine - PostgreSQL - 表/字段名称中的大写和空格

postgresql - Postgres 使用 LIMIT 1 选择性能

php - JpGraph:使用 MySQL 数据创建 PHP 条形图

php - 在 jpGraph 的数据库显示中需要换行符

php - JpGraph 图例顺序