Sorgusu JOIN PHP PDO sonucu

2 Cevap php

My problem is

Ben hem id alan var ki, basit bir iki tablo arasında JOIN yapmaya çalışın. Ben PDO kullanmak gibi benim sonuç, bir stdClass nesnedir. Herkes nasıl ben ilk tablonun id ve ikinci tablonun id arasında bir fark yaratabilir biliyor mu?

Code

bc. $sql = "SELECT *, FROM products AS p, products_categories as c WHERE c.id = p.category";

	$stmt = $__CONN__->prepare($sql);
	$stmt->execute();

	$products = array();

	while($product = $stmt->fetchObject())
		$products[] = $product;

	return $products;

Ben $ ürünler-> id kullanmaya çalışırsanız, o bana category tablonun id gösterecektir. Bir dizi olsaydı, ben $ ürünler ['p.id'] kullanabilirsiniz, ben bu alternatif gerek.

Çok teşekkürler.

2 Cevap

Sen bir tablodan id sütun veya sütun adları ayrı kılmak için başka bir sütun diğer adı vermek zorunda.

Bu "SELECT *", size bu tablodan almak istiyorum all sütun adları heceleyerek zorunda kullanmak anlamına gelir. Eğer aliasing olmadan tüm bu sütunları istiyorsanız en azından hala category.* için sorgulayabilirsiniz.

Bu arada, sorun bu tür her tablonun birincil anahtar için "id" gibi genel bir ad kullanarak önlemek için iyi bir nedendir. Bunun yerine product_id ve category_id gibi daha açıklayıcı bir isim kullanın. Sonra çelişkili sütun adlarının sorun olmaz.

Ben kullanılan

select 
    clientes.nombre AS cn, 
    proyectos.nombre AS pn 
FROM 
    proyectos 
        LEFT JOIN clientes 
            ON proyectos.clienteId = clientes.id

Bu kullanarak PDO ile çalıştı fetch(PDO::FETCH_ASSOC)