加入具有相同的id和列的名称相同,但不同的价值观
问题描述:
我想要做什么,我刚才说的两个表。我有两个连接的表格。他们加入了相同的ID。但有两列同名,我只想输出其中一列。加入具有相同的id和列的名称相同,但不同的价值观
$query= "SELECT *
FROM users
INNER JOIN bookings ON users.username = bookings.personal
JOIN products ON bookings.productid = products.productid
WHERE users.id = $id
";
$selectproductname = $db->prepare($selectuseremailquery);
$selectproductname ->execute(array());
foreach($selectproductname as $index => $rs) :
it gives me something like this table:
-id -----id----products----products------
- -
-1 1 a cup coffee cup -
-2 2 a pen a purple pen -
-----------------------------------------
我想输出咖啡杯,但有两列同名。我如何输出?
这不起作用:
<td><div> <?php echo $rs['products.productname']; ?> </div> </td>
而且我有选择它的所有*。
答
使用SELECT *
一般considered harmful是制作软件,尤其是在PHP中,你问的确切原因。
在PHP中,有时结果集被加载到一个关联数组。这将导致除了每组重复列名之外的所有数据都消失。
你想用
SELECT products.id,
products.productname,
products.id AS product_id,
bookings.*,
etc., etc.
列举你在结果集中需要的列。 (请注意,我在猜测你的列名)。
我知道你的问题说,你必须使用SELECT *
。我怀疑这是真的。如果是这样的话,这可能是由不知道他们在谈论什么的人施加的要求。 (愚蠢的教授技巧浮现在脑海中)
如果必须使用SELECT *
,则需要使用结果集元数据来检查每列的元数据,并确定需要提取哪些列。 getColumnMeta()
这样做。
明确命名,而不是使用''你在想结果所有列。例如。 'bookings.id,bookings.name'等 – wvdz
Noo ...不要构建这样的查询。 SQL注入很容易受到攻击。 –
Thans Wvdz。我解决了。威利姆,你什么意思? –