MySQL选择查询错误

时间:2010-01-15 19:04:10

标签: mysql

我的查询引发了一个错误,如

select id,cHospital from med_patient where cHospital is not null  union
select id,cHospital1 from med_patient where cHospital1 is not null  union
select id,cHospital2 from med_patient where cHospital2 is not null  order by 1

错误是

  

注意:未定义的索引:第97行的F:\ wamp \ www \ mmr-final \ admin \ all_hospital_list.php中的cHospital1

     

注意:未定义的索引:第98行的F:\ wamp \ www \ mmr-final \ admin \ all_hospital_list.php中的cHospital2

     

注意:未定义的索引:第97行的F:\ wamp \ www \ mmr-final \ admin \ all_hospital_list.php中的cHospital1

     

注意:未定义的索引:第98行的F:\ wamp \ www \ mmr-final \ admin \ all_hospital_list.php中的cHospital2

     

注意:未定义的索引:第97行的F:\ wamp \ www \ mmr-final \ admin \ all_hospital_list.php中的cHospital1

     

注意:未定义的索引:第98行的F:\ wamp \ www \ mmr-final \ admin \ all_hospital_list.php中的cHospital2

     

注意:未定义的索引:第97行的F:\ wamp \ www \ mmr-final \ admin \ all_hospital_list.php中的cHospital1

     

注意:未定义的索引:第98行的F:\ wamp \ www \ mmr-final \ admin \ all_hospital_list.php中的cHospital2

     

注意:未定义的索引:第97行的F:\ wamp \ www \ mmr-final \ admin \ all_hospital_list.php中的cHospital1

     

注意:未定义的索引:第98行的F:\ wamp \ www \ mmr-final \ admin \ all_hospital_list.php中的cHospital2

     

注意:未定义的索引:第97行的F:\ wamp \ www \ mmr-final \ admin \ all_hospital_list.php中的cHospital1

     

注意:未定义的索引:第98行的F:\ wamp \ www \ mmr-final \ admin \ all_hospital_list.php中的cHospital2

而且它正在抛出空行。

如何更改此查询以避免错误?

2 个答案:

答案 0 :(得分:2)

这些不是MySQL错误。它们是PHP错误。基本上,您最有可能尝试使用变量而不首先声明它们。确保在使用变量之前始终声明变量。它让你不喜欢有错误。

答案 1 :(得分:0)

UNION查询中,所有行的列名必须相同。所以它使用了union中第一个查询的列名。联合中后续查询中的列名将被忽略。

换句话说,在此查询中:

select id,cHospital from med_patient where cHospital is not null union 
select id,cHospital1 from med_patient where cHospital1 is not null union 
select id,cHospital2 from med_patient where cHospital2 is not null order by 1

所有行上的列名为:idcHospital

因此,在PHP代码中,当您将结果作为对象获取并尝试引用对象的字段时,这样:

$cHospital1 = $row->cHospital1;
$cHospital2 = $row->cHospital2;

该对象没有这些名称的字段。它只有$row->cHospital,即使对于来自联合中第二和第三个查询的行也是如此。