Ненадежный запрос возникает из БД Access с подключением odbc PHP PDO с использованием драйвера MDBTools

Я на Ubuntu 16.04, и подключился к базе данных MS Access через PHP PDO. Я использую драйвер MDBTools odbc. Чтобы подготовиться к этому, я запустил следующие команды в терминале:

sudo apt install php7.0-odbc
sudo apt install libmdbodbc1
sudo service apache2 restart
sudo ln -s /usr/lib/x86_64-linux-gnu/libodbccr.so.2 /etc/libodbccr.so

Я могу подключиться к базе данных просто отлично. Пример подключения:

$driver = 'MDBTools';
$accdb  = '/var/www/html/access/mydb.accdb';
$dbh = new PDO('odbc:DRIVER=' . $driver . '; DBQ=' . $accdb);

Первый запрос:

// See a whole record
foreach( $dbh->query('
SELECT
*
FROM Assets
WHERE Asset_ID = 12
', PDO::FETCH_ASSOC) as $row )
{
echo '<pre>';
var_dump( $row );
echo '</pre>';
}

Результаты первого запроса:

array(7) {
["Asset_ID"]=>
string(2) "12"["Asset_Date"]=>
string(17) "10/07/16 00:00:00"["Asset_Category"]=>
NULL
["Asset_SubCategory1"]=>
NULL
["Asset_Spot_X"]=>
NULL
["Asset_Spot_Y"]=>
NULL
["Asset_Spot_Z"]=>
NULL
}

Обратите внимание, что в первом запросе многие поля показывают, что значения имеют значение NULL, но на самом деле это не так, как в базе данных. Я покажу вам во втором запросе:

// See same record's Asset_Spot_X value
foreach( $dbh->query('
SELECT
Asset_Spot_X
FROM Assets
WHERE Asset_ID = 12
', PDO::FETCH_ASSOC) as $row )
{
echo '<pre>';
var_dump( $row );
echo '</pre>';
}

Результаты для второго запроса:

array(1) {
["Asset_Spot_X"]=>
string(4) "1252"}

Эти запросы выполняются одновременно, поэтому значение Asset_Spot_X должно быть одинаковым, но в одном я получаю NULL, а в другом — 1252. Что я делаю не так? Кажется, что запросы, которые я делаю, очень просты, поэтому я не понимаю, что происходит. PDO не показывает никаких ошибок, когда я проверяю errorInfo и errorCode.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]