###前提・実現したいこと
<実現したいこと>
Linux(CentOS)上のPHP7.0 からMicrosoft SQLServer2012 上に接続して
データを取得したい。
(Prepareでパラメーターを使えない)
<環境>
CentOS 7.2
Apache 2.4.6
PHP 7.0.6
ODBC環境は以下をインストール
unixODBC 2.3.1
freetds 0.95
PHPのODBCドライバは以下
php70-php-odbc
ここからインストール
yum --enablerepo=remi install php70-php-odbc
###発生している問題・エラーメッセージ
odbc_prepareを使用して、パラメーターなしのSQLは実行できたが
where句にパラメーターを入れると
statementがそもそも取得できない
###該当のソースコード
<実行できるコード>
$sql = " SELECT * FROM usrtable WHERE column1 = 'XXXX' AND column2 = 'YYYY'";
$stmt = odbc_prepare($this->conn, $sql);
var_dump($stmt);
$result = odbc_execute($stmt,$param);
var_dump($result);
$row = odbc_fetch_array($stmt);
print_r($row,true);
<実行できないコード1>
$sql = " SELECT * FROM usrtable WHERE column1 =? AND column2 =?";
$param = array('XXXX','YYYY');
$stmt = odbc_prepare($this->conn, $sql);
var_dump($stmt);
$result = odbc_execute($stmt,$param);
var_dump($result);
$row = odbc_fetch_array($stmt);
print_r($row,true);
<実行できないコード2>
$sql = " SELECT * FROM usrtable WHERE column1 =:col1 AND column2 = :col2";
$param = array('col1' => 'XXXX',col2 => 'YYYY');
$stmt = odbc_prepare($this->conn, $sql);
var_dump($stmt);
$result = odbc_execute($stmt,$param);
var_dump($result);
$row = odbc_fetch_array($stmt);
print_r($row,true);
###試したこと
・パラメーターなしのprepareは実行され、データが取得できた。
・実行できないコード1のように?のパラメーターに対し、配列を順序で生成した場合はそもそも$stmtのvar_dumpでfalseになってしまう。
・実行できないコード2のように連想配列にした場合は、$stmtは取得できるが
次のexecuteでfalseになってしまう。
###補足情報(言語/FW/ツール等のバージョンなど)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/04 11:14