请我对mysql完全陌生,我的问题是:
我有一个名为“cong”的表,其中包含以下列(id、sort_code、pin、name、state、lga、zip、address、min、min_photo、sec、min_phone、sec_phone),其中包含所有会众。
列 (state, lga) 包含表“states”和“local_govt”中的 id。
“states”表具有以下列(id、country_id、name),“local_govt”表具有以下列(id、country_id、state_id、name)。
我想对“cong”表进行搜索,该表应该在“state”和“local_govt”表中搜索匹配项,下面是我编写的搜索功能:
<?php
function find_cong($term) {
$query = "SELECT * FROM cong";
$query .= " WHERE state rLIKE
(SELECT id FROM states WHERE upper(name) rLIKE '{$term}')";
$query .= " OR lga rLIKE
(SELECT id FROM local_govt WHERE upper(name) rLIKE '{$term}')";
$query .= " OR upper(name) rLIKE '{$term}'";
$query .= " OR upper(address) rLIKE '{$term}'";
$query .= " OR upper(sort_code) rLIKE '{$term}'";
$query .= " OR upper(pin) rLIKE '{$term}'";
$query .= " OR upper(zip) rLIKE '{$term}'";
$query .= " OR upper(min) rLIKE '{$term}'";
$query .= " OR upper(sec) rLIKE '{$term}'";
$query .= " OR upper(min_phone) rLIKE '{$term}'";
$query .= " OR upper(sec_phone) rLIKE '{$term}'";
$result = mysql_query($query);
confirm_query($result);
return $result;
}
function confirm_query($query) {
if (!$query) {
die("Database query failed : " . mysql_error());
}
}
?>
现在的问题是,它搜索了一些术语并得出了准确的结果,但是对于一些特定的术语,如 local_govt 和州名,它会弹出一个错误:(数据库查询失败:子查询返回超过 1 行)
请我需要你的帮助,因为我不知道如何更好地编写代码。谢谢。