Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么WHERE条件中使用的键在php中找不到标识符?_Php_Sql_Pear - Fatal编程技术网

为什么WHERE条件中使用的键在php中找不到标识符?

为什么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'],或者除

我有一个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']
,或者除
$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