Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?
@saoshi

xampp(PHP)からaccessにアクセスできない時

xampp(PHP)からaccessに接続しようとしてハマったのでメモ。

環境

  • windows10 Pro 64bit
  • xampp 64bit
  • accessの形式 accdb

PHPのソース

define('ACCESS_DB_DRIVER',   '{Microsoft Access Driver (*.mdb, *.accdb)}');

$dbq = 'C:/xampp/htdocs/***.accdb';


$objPdo = new PDO("odbc:Driver=" . ACCESS_DB_DRIVER . ";DBQ=" . $dbq . ";");

エラー内容

PHP Fatal error:  Uncaught PDOException: SQLSTATE[IM002] SQLDriverConnect: 0 [Microsoft][ODBC Driver Manager] ...

解決方法

php.iniを編集

;extension=pdo_odbc

コメントアウトを外す

ODBCを確認

コントロール パネル>システムとセキュリティ>管理ツール>ODBCデータソース(64bビット)

「ドライバー」タブにMicrosoft Access Driverが無かったので、ドライバーをインストールすれば解決すると推測

ドライバーダウンロード

こちらの記事を参考にさせていただきました。
Microsoft Access(.mdb、.accdb)のODBC、OLEDBドライバーに関するまとめ

https://www.microsoft.com/ja-jp/download/details.aspx?id=13255
「AccessDatabaseEngine_X64.exe」をダブルクリックしインストール

テーブルによってデータが取得できない

たぶんテーブル名に入っている記号の問題だと思うのですが、バックスラッシュ「`」を入れたら解決しました。

$sql = "SELECT * FROM 03_案件(基本)テーブル;";

$sql = "SELECT * FROM `03_案件(基本)テーブル`;";

抽出条件でデータ型が一致しません。

SQLSTATE[22018]: Invalid character value for cast specification: -3030 [Microsoft][ODBC Microsoft Access Driver] 抽出条 件でデータ型が一致しません。 (SQLExecute[-3030] at ext\pdo_odbc\odbc_stmt.c:259)

数値型に空文字「''」を挿入しようとすると発生するようです。

オートナンバー振り直し

テーブルを開いていない状態から
作成>クエリデザイン>SQL表示

sql
DELETE * FROM table_name;
ALTER TABLE table_name ALTER COLUMN id COUNTER(1,1);
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?