2

このPHPコードを持つ:

$sql = "SELECT * FROM users WHERE name = ?";
$params = array('admin');
$result = odbc_prepare($link, $sql);
if (!$result) {
  die(odbc_errormsg());
}
else {
  if (!odbc_execute($result, $parameters)) {
    die(odbc_errormsg());
  }
}

私はこれを得る:

Warning: odbc_execute() [function.odbc-execute]: SQL error: Failed to fetch error message, SQL state HY000 in SQLExecute in [...]

ただし、これを行うと:

$sql = "SELECT * FROM users WHERE name = 'admin'";
$params = array();
$result = odbc_prepare($link, $sql);
if (!$result) {
  die(odbc_errormsg());
}
else {
  if (!odbc_execute($result, $parameters)) {
    die(odbc_errormsg());
  }
}

期待どおりの結果が得られます。どうなり得るか?

私のコードは、MSSQL Server 2008 に接続して、UnixODBC と FreeTDS を使用して Ubuntu Server で実行されています。

よろしく!

4

1 に答える 1

1

odbc_* 関数を使用する代わりに、PDO を使用しないのはなぜですか? パラメーター化されたクエリを内部で処理し、SQL ステートメントをドライバー (この場合は FreeTDS) に渡す必要があります。

于 2012-12-17T23:13:30.137 に答える