После долгих поисков в Интернете, когда я вижу эту ошибку, она выглядит действительно в зависимости от сценария.Пока что я не нашел тот, который соответствовал бы моему сценарию.Я думаю, что моя проблема связана с подготовленным оператором с параметрами типа пространственных данных.
Способ выполнения моего кода:
$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 правильный, но моя проблема, вероятно, из-за части подготовки / выполнения.Я не уверен, что типы пространственных данных не могут быть назначены таким образом?
Edit
Я также хочу отметить, что я нахожусь на PHP версии 5.5.9, и я выполнил запросыв оригинальном методе с параметрами в параметре execute просто отлично.