2012-08-12 42 views
0

MySQL的是做精mysqli的创建,直到选择时:之前我用/mysqli_fetch_array:未定义指数从多个表

mysql_fetch_array()。但是,当我使用mysqli_fetch_array(){Notice“i”}时,从多个表中进行选择时,从ASSOCIATIVE数组获取结果时出现问题。也就是,

$query = "SELECT t1.id, t2.id FROM t1, t2 WHERE ..."; 
$result = mysqli_query($conn,$query); 
//if num of rows check... 
while($row = mysqli_fetch_array($result)) 
{ $first_id = $row['t1.id']; $second_id = $row['t2.id']; } 

而且,我得到一个错误:未定义的索引:t1.id(或t2.id)。

查询工作正常,如果我只选择从t1或t2(不是两个)或如果我说$ row ['id'];而不是$ row ['t1.id'];但那不能帮助从两个具有相同名称的表中获得不同的字段

请帮忙。

谢谢! =)

+0

使用字段的别名。我甚至不知道mysql允许指定't1.id'作为数组索引 – knittl 2012-08-12 08:58:27

回答

0

你的代码在分离t1.id和t2.id时出现了问题,结果会以“id”的形式返回它们。

尝试在查询中使用AS替换列重命名/别名;

$query = "SELECT t1.id AS t1id, t2.id AS t2id FROM t1, t2 WHERE ..."; 
$result = mysqli_query($conn,$query); 
//if num of rows check... 
while($row = mysqli_fetch_array($result)) 
{ $first_id = $row['t1id']; $second_id = $row['t2id']; } 
+0

谢谢!就是这样。我只是意识到,不像mysql_result mysqli_fetch_array不能访问具有相同名称的字段。所以,任何人都可以使用“AS”关键字(如您所建议的),或者可以使用数字索引(数值数组)。如果将传统的mysql_result()与mysqli(i =改进的)进行比较,我相信这是愚蠢的,是的。再次感谢您的及时帮助! – 2012-08-12 09:05:30

+0

“如果结果的两列或多列具有相同的字段名称,则最后一列将优先并覆盖较早的数据。为了访问具有相同名称的多列,必须使用行的数字索引版本。 “[链接](http://www.php.net/manual/en/mysqli-result.fetch-array.php) – 2012-08-12 09:07:36