簡體   English   中英

PHP PDO查詢未插入 - 錯誤HY093

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM