为什么WHERE条件中使用的键在php中找不到标识符?
我有一个SQL语句,如下所示:为什么WHERE条件中使用的键在php中找不到标识符?,php,sql,pear,Php,Sql,Pear,我有一个SQL语句,如下所示: SELECT ISO_id, country_name, gold, silver, bronze, total FROM Country WHERE ISO_id='GBR'; 我使用它通过PHP和PEAR从数据库接收信息。数据库返回GBR,UK,29,17,19,65,这意味着所有信息都已正确返回 通过PEAR成功调用和存储信息: 现在,如果我使用$row['country\u name'],$row['gold'],或者除
SELECT
ISO_id, country_name, gold, silver, bronze, total
FROM
Country
WHERE
ISO_id='GBR';
我使用它通过PHP和PEAR从数据库接收信息。数据库返回GBR,UK,29,17,19,65
,这意味着所有信息都已正确返回
通过PEAR成功调用和存储信息:
现在,如果我使用$row['country\u name']
,$row['gold']
,或者除$row['ISO\u id']]
之外的任何其他方法,那么它将以正常关联数组的形式正确返回信息。但是,当我使用$row['ISO_id']
时,我得到了错误:
注意:未定义索引:ISO_id在/disks/olympics/view.php在线
100调用堆栈:0.0004 662648 1。{main}()/disks/olympics/view.php:0
我的临时解决方法是在原始sql语句中调用ISO_id
两次,然后重命名一个,其工作原理如下:
SELECT
ISO_id, ISO_id as iso2, country_name, gold, silver, bronze, total
FROM
Country
WHERE
ISO_id='GBR';
//GBR, GBR, UK, 29, 17, 19, 65
现在我可以成功地调用$row['iso2']
,以获取应该已经作为$row['ISO_id']
工作的内容
出于某种原因,在SQL语句的
WHERE
子句中使用原始的ISO_id
似乎会弄乱我以后如何在程序中使用它。这是为什么?如果在提取循环期间打印出$row
,您将看到sql server返回的ISO\u id
的实际键都是小写。因此,当您尝试将其引用为ISO\u id
而不是ISO\u id
PHP时,无法找到它
您只需将密钥更改为“
iso_id
”,全部小写,就可以了。iso_id可以为空吗?是否每一行都保证包含一个ISO_id字段?@Mari每一行都保证包含一个ISO_id,是的。我还想质疑“=&”赋值引用运算符“=”的使用在这里是否更合适,并可能解释一些意外行为。@臭名昭著,这帮助我找到了它!ISO_id在返回时变为ISO_id。。。数组([iso_id]=>GBR[iso2]=>GBR[country_name]=>UK[gold]=>29[silver]=>17[bronze]=>19[total]=>65)非常好!)很高兴我能帮忙。
SELECT
ISO_id, ISO_id as iso2, country_name, gold, silver, bronze, total
FROM
Country
WHERE
ISO_id='GBR';
//GBR, GBR, UK, 29, 17, 19, 65