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());
  }
}

我得到了预期的结果。会是什么呢?

我的代码在 Ubuntu Server 上运行,使用 UnixODBC 和 FreeTDS,连接到 MSSQL Server 2008。

问候!

4

1 回答 1

1

你为什么不使用 odbc_* 函数而不是使用 PDO?它应该在内部处理参数化查询并将 SQL 语句传递给驱动程序(在本例中为 FreeTDS)。

于 2012-12-17T23:13:30.137 回答