mysqli_fetch_array : undefined index when selecting from multiple tables
在创建mySQLi之前,mySQL运行良好:/
我以前使用过mysql_fetch_array()。但是,当我使用mysqli_fetch_array(){Notice" i"}时,从多个表中进行选择时从ASSOCIATIVE数组获取结果存在问题。也就是说,
1 2 3 4 5
| $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'];但这无助于从两个具有相同名称的表中获取不同的字段
请帮助。
谢谢! =)
- 对字段使用别名。我什至不知道mysql允许指定t1.id作为数组索引
您的代码在分离t1.id和t2.id时遇到问题,结果将它们都返回为\\'id \\'。
尝试在查询中使用AS重命名/别名列;
1 2 3 4 5
| $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']; } |
- 谢谢!就是这样我只是意识到,与mysql_result不同,mysqli_fetch_array无法访问具有相同名称的字段。因此,要么可以使用" AS"关键字(如您建议的那样),要么可以使用数字索引(数字数组)。我相信,如果将传统的mysql_result()与mysqli(i =改进的)进行比较,那是非常荒谬的,是的。再次感谢您的及时帮助!
-
"如果结果的两个或更多列具有相同的字段名称,则最后一列将优先并覆盖先前的数据。为了访问具有相同名称的多个列,必须使用该行的数字索引版本。"关联