PDO获取IMSSP无效类型

时间:2015-09-22 08:55:14

标签: php sql sql-server pdo

这是我的问题。

我正在尝试这样做:

$query = "SELECT * FROM dbo.V_Daten_GekPatrone ORDER BY Tagesnummer DESC ";
$sql = $conn->query($query);
try
{
    while ($row = $sql->fetch(PDO::FETCH_ASSOC))
    {
        //Do Something.....
    }
} catch (Exception $e)
{
    echo $e->getMessage();
    var_dump($e);
}

我得到的是执行消息:

  

SQLSTATE [IMSSP]:类型无效。

和Var_Dump:

object(PDOException)[9]
  protected 'message' => string 'SQLSTATE[IMSSP]: Invalid type.' (length=30)
  private 'string' (Exception) => string '' (length=0)
  protected 'code' => string 'IMSSP' (length=5)
  protected 'file' => string 'H:\xampp\htdocs\Projekte\munition\test.php' (length=42)
  protected 'line' => int 24
  private 'trace' (Exception) => 
    array (size=1)
      0 => 
        array (size=5)
          'file' => string 'H:\xampp\htdocs\Projekte\munition\test.php' (length=42)
          'line' => int 0
          'function' => string 'fetch' (length=5)
          'class' => string 'PDOStatement' (length=12)
          'type' => string '->' (length=2)
  private 'previous' (Exception) => 
    object(PDOException)[8]
      protected 'message' => string 'SQLSTATE[IMSSP]: Invalid type.' (length=30)
      private 'string' (Exception) => string '' (length=0)
      protected 'code' => string 'IMSSP' (length=5)
      protected 'file' => string 'H:\xampp\htdocs\Projekte\munition\test.php' (length=42)
      protected 'line' => int 24
      private 'trace' (Exception) => 
        array (size=1)
          0 => 
            array (size=5)
              ...
      private 'previous' (Exception) => 
        object(PDOException)[7]
          protected 'message' => string 'SQLSTATE[IMSSP]: Invalid type.' (length=30)
          private 'string' (Exception) => string '' (length=0)
          protected 'code' => string 'IMSSP' (length=5)
          protected 'file' => string 'H:\xampp\htdocs\Projekte\munition\test.php' (length=42)
          protected 'line' => int 24
          private 'trace' (Exception) => 
            array (size=1)
              ...
          private 'previous' (Exception) => 
            object(PDOException)[6]
              ...
          public 'errorInfo' => 
            array (size=3)
              ...
      public 'errorInfo' => 
        array (size=3)
          0 => string 'IMSSP' (length=5)
          1 => int -27
          2 => string 'Invalid type.' (length=13)
  public 'errorInfo' => 
    array (size=3)
      0 => string 'IMSSP' (length=5)
      1 => int -27
      2 => string 'Invalid type.' (length=13)

我的语句在SQL-Server上运行时出现问题,这里是前两个结果:

ID  Tagesnummer Menge       Zustand           Hersteller     Gewichtsveraenderung   Temp    Bemerkung   Luftfeuch   Luftdruck
5      9338014    568   verschossen   CIS State Arsenals                   -23       18         NULL          40          968
5      9338013    568   verschossen   CIS State Arsenals                   -23       18         NULL          43          968

我在同一个页面上提出了另一个请求,它也没有问题。

这意味着我的数据库连接正常。

那我这个错误到底是什么? 从Execption我会说,Statment($ query)没有传递但是怎么可能?

任何想法? 虽然googeling我发现this看了第一个用户贡献的笔记。但我检查但代码中没有这样的错误。但是想把它留在这里,因为这个错误类型并没有多少。

我还检查过$ sql不是false,所以query()经历了。

1 个答案:

答案 0 :(得分:0)

尝试将$query语句更改为:

$query = "SELECT CAST(col1 AS VARCHAR(255)), CAST(col2 AS VARCHAR(255)), CAST(col3 AS VARCHAR(255)) FROM dbo.V_Daten_GekPatrone ORDER BY Tagesnummer DESC";

当我收到相同的错误时,将选中的列选为varchar解决了类似的问题,即

  

SQLSTATE [IMSSP]:类型无效。