我看到兩個問題。首先,GeomFromText函數接受一個字符串,所以它應該看起來像GeomFromText('POLYGON((0, 1, 2))')
(注意引號)。其次,由於POLYGON...
文本是一個字符串文字,因此它應該替換爲通配符,而不是單個部分。您的查詢應該是這樣的:
INSERT INTO areas (name, polygon)
VALUES (?, GeomFromText(?))
你會再建POLYGON((?, ?, ?, ?, ?, ?))
字符串中的應用程序,而不是在聲明。由於PHP有安全的字符串處理,我會推薦使用sprintf('POLYGON((%d, %d, %d, %d, %d, %d))', $var1, $var2, $var3, $var4, $var5, $var6)
(sprintf在C中是危險的)。
或者,您可以使用MySQL的空間函數來生成點。我認爲這是你想要做的,但是你不通過GeomFromText傳遞它們。要建立與MySQL的空間功能的多邊形,文檔建議你需要做的:
INSERT INTO areas (name, polygon)
VALUES (?, Polygon(LineString(Point(?, ?), Point(?, ?), Point(?, ?))))
此前的MySQL 5.1.35,你需要做的:
INSERT INTO areas (name, polygon)
VALUES (?, GeomFromWKB(Polygon(LineString(Point(?, ?), Point(?, ?), Point(?, ?)))))
謝謝你,然而,除去GeomFromText目前沒有幫助我。 「INSERT INTO區域(名稱,多邊形)VALUES(???????,POLYGON((,,,,,)))」 觸發以下錯誤: 「操作數應包含1列(S )「 任何想法爲什麼會發生這種情況? – Bisa
似乎這屬於一個自己的問題,你的答案是足夠的原始qiestion =) – Bisa