У меня есть база данных MS Access. Я хочу получить записи, а затем записать в двухмерный массив. Я могу, но я думаю, что область памяти набора записей и область памяти массива — то же самое. Потому что, если я закрою набор записей, я не смогу получить доступ к значениям массивов.
Ошибка: Исправляемая фатальная ошибка: объект варианта класса не может быть
преобразован в строку в …
$databaselocation = $_SERVER['DOCUMENT_ROOT'] . "ornek.mdb";
$conn = new COM('ADODB.Connection') or exit('Cannot start ADO.');
$conn->Open("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=$databaselocation");
$SQL1 = "SELECT * from konu";
$rs = new com("ADODB.RecordSet") or die("Recordset cant create!");
$rs->Open($SQL1,$conn,1,3);
$say = $rs->RecordCount();
echo "Row Counts: " . $say . "<br><br>";
$dizi = array(array());for($a=0; $a<$say; $a++)
{
$dizi[$a][0] = $rs[0];
$dizi[$a][1] = $rs[1];
$rs->MoveNext;
}
$rs->Close(); $conn->Close();
$rs = null; $conn = null;
echo $dizi[0][0]; // this line ERROR same below
for($a=0; $a<$say; $a++)
{
echo $dizi[$a][0] . " - " . $dizi[$a][1] . "<br>"; // ERROR
}
В $rs
у вас нет строкового значения, но специальное COM
объект. Обычно он автоматически конвертируется в string
, В этом случае в любой ячейке у вас есть какое-то странное значение, например формула.
Пытаться variant_get_type () а также Список констант и проверить $rs[0]
, $rs[1]
перед использованием.
И если я помню, вы должны использовать $rs->fields[0]
имущество. (Да, вы используете эти методы)
я решил только сейчас. когда я приведу вариант объекта к строке его работал как
$ Dizi [$ а] [0] = (строка) $ Р. [0];