我的查询引发了一个错误,如
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
而且它正在抛出空行。
如何更改此查询以避免错误?
答案 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
所有行上的列名为:id
和cHospital
。
因此,在PHP代码中,当您将结果作为对象获取并尝试引用对象的字段时,这样:
$cHospital1 = $row->cHospital1;
$cHospital2 = $row->cHospital2;
该对象没有这些名称的字段。它只有$row->cHospital
,即使对于来自联合中第二和第三个查询的行也是如此。