[英]PHP PDO query not inserting - Error HY093
經過大量的網絡搜索,我看到這個錯誤的時候,它看起來確實特定於場景。 到目前為止,我還沒有找到一個符合我情景的產品。 我認為我的問題來自於空間數據類型參數的預備聲明。
我執行代碼的方式是:
$sql = $conn->prepare("INSERT INTO states(`name`, `poly`) VALUES(':name',GeomFromText('GEOMETRYCOLLECTION(:coords)'));");
$res = $sql->execute(['name'=>$name, 'coords'=>$coords]);
if($res){
echo "... Successfully Inserted<br><br>";
}
else{
echo "... Failed<br><br>";
print_r($sql->errorInfo());
echo "<br><br>";
}
以上是失敗的。 已測試與數據庫的連接。 由於這些是相當大的幾何集,而不是粘貼我的代碼,我將展示我如何驗證我的SQL:
轉儲原始SQL文件並將SQL復制/粘貼到phpMyAdmin窗口,所有內容都插入正常。
$sqlStr = "INSERT INTO states(`name`, `poly`) VALUES('$name',GeomFromText('GEOMETRYCOLLECTION($coords)'));";
$check = file_put_contents('./states/'.$name.'2.sql', $sqlStr);
因此,我認為我的sql是正確的,但我的問題可能是由於准備/執行部分不知何故。 我不確定是否不能像這樣分配空間數據類型?
我還想注意我在PHP版本5.5.9上並且我在原始方法中執行了查詢,執行中的參數就好了。
最終的代碼無法正常工作。 查詢中的參數不能放在引號內。
由於GEOMETRYCOLLECTION(:coords)
必須在字符串中,因此需要使用CONCAT()
來創建此字符串。
$sql = $conn->prepare("
INSERT INTO states(`name`, `poly`)
VALUES(:name,GeomFromText(CONCAT('GEOMETRYCOLLECTION(', :coords, ')')));");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.