2012-07-03 3 views
3

я с мастер-продукт таблицы и различные другие таблицы, содержащие свойства продукта, запрос:Postgres PHP не давая каждый столбец в наборе результатов

select p.description, category.value, colour.value, wood.value, brand.value, type.value, fabric.value, model.value from product_master p, category, colour, wood, brand, type, fabric, model where p.category_code=category.category_code and p.colour_code = colour.colour_code and p.wood_code = wood.wood_code and p.brand_code = brand.brand_code and p.type_code = type.type_code and p.fabric_code = fabric.fabric_code and p.model_code = model.model_code 

работает нормально в pgAdmin, но в PHP это дает только 2 колонки, я получаю результат обратно через AJAX

мой PHP код

<?php 
// Connecting, selecting database 
$dbconn = pg_connect("host=***** dbname=*** user=*** password=***") 
    or die('Could not connect: ' . pg_last_error()); 

// Performing SQL query 
$query = ' select p.description, category.value, colour.value, wood.value, brand.value, type.value, fabric.value, model.value from product_master p, category, colour, wood, brand, type, fabric, model where p.category_code=category.category_code and p.colour_code = colour.colour_code and p.wood_code = wood.wood_code and p.brand_code = brand.brand_code and p.type_code = type.type_code and p.fabric_code = fabric.fabric_code and p.model_code = model.model_code '; 
$result = pg_query($query) or die('Query failed: ' . pg_last_error()); 



echo pg_affected_rows($result) ; 

echo "\n"; 

echo pg_num_fields($result); 


// Printing results in HTML 
echo "<table>\n"; 
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) { 
    echo "\t<tr>\n"; 
    foreach ($line as $col_value) { 
     echo "\t\t<td>$col_value</td>\n"; 
    } 
    echo "\t</tr>\n"; 
} 
echo "</table>\n"; 

// Free resultset 
pg_free_result($result); 

// Closing connection 
pg_close($dbconn); 
?> 
+0

Для 'пункт select' вы должны использовать [pg_num_rows()] (http://br.php.net/manual/pt_BR/function.pg-num-rows.php) вместо pg_affected_rows() –

+0

@MarcioSimao согласился и что вы за это указали, но, к сожалению, это не моя основная проблема. – Mohit

+0

Я написал ответ, пожалуйста, посмотрите, поможет ли он вам –

ответ

1

Вы используете pg_fetch_array() неправильно. Вы не можете передать второй параметр как NULL, потому что он указывает, какая строка читается.

Попробуйте это:

while ($line = pg_fetch_array($result)) { 
    echo "\t<tr>\n"; 

    foreach ($line as $col_value) 
     echo "\t\t<td>$col_value</td>\n"; 

    echo "\t</tr>\n"; 
} 
+0

спасибо боссу !!! – Mohit

+0

@ user1474811, Nevermind =) –

Смежные вопросы