我正在用PHP编写一个程序来搜索集合数据库中的植物名称。您应该能够输入科学植物名称(例如 Rumex acetosa 或 Medicago x varia)以查找该名称的所有条目。植物名称是原子化的,所以每个名称都由两到五个部分组成。我不想单独搜索每个部分,但我需要将它们全部添加到一个名称。
所以我试图做的是写一个SELECT CONCAT
子句。
$sql = "
SELECT observationid, fullnamestring, latitudedecimal, longitudedecimal
FROM observation, (
SELECT CONCAT (genusormonomial, firstepithet, rank, hybridflag, intraspecificepithet)
FROM name
) name_str, name, gatheringsitecoordinates
WHERE name.nameid = observation.fkname
AND gatheringsitecoordinates.sitecoordinateid = observation.fkgatheringsite
AND (
SELECT CONCAT (genusormonomial, firstepithet, rank, hybridflag, intraspecificepithet)
FROM name
) name_str LIKE '" . mysql_real_escape_string($sucharray[0]) . "'
";
不幸的是,它根本无法以这种方式工作,因为他抱怨我的查询语法。
错误:您的 SQL 语法有错误;检查与您的MySQL 服务器name_str LIKE 'rum%'
版本相对应的手册,以在第 2 行附近使用正确的语法
为了让您了解它到底应该是什么样子,请浏览http://bgbm3.bgbm.fu-berlin.de/iopi/gpc/query.asp
我是一个完全的 Sql-newb,所以也许你们中的某个人可以帮助我!
谢谢!
PS:我已经查看了搜索连接字段的线程,但这不会,因为我真的需要搜索整个名称,而不仅仅是它的每个部分。