Show
Ignore:
Timestamp:
10/02/08 18:12:10 (3 months ago)
Author:
nowelium
Message:

mysql の procedure サポートは終わり。
General error: 2014 Cannot execute queries while other unbuffered queries are active. とかは、PDOのPDO::MYSQL_ATTR_USE_BUFFERED_QUERY をいくら設定してもダメなので、少し逃げ。一端切断すればなんとかなるけど、Datasource設定とかは管理外なので、やらない。
multi rows は 2次元配列で。

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/php/misc/Hermit/src/Hermit/parameter/HermitProcedureParameter.php

    r20417 r20492  
    3030    public function bind(PDOStatement $stmt, $value){ 
    3131        $param = $value[0]; 
     32        $propertyNames = $param->getPropertyNames(); 
     33 
    3234        foreach($this->bindKeys as $index => $key){ 
    3335            $bindKey = ':' . $key; 
    3436            if($this->info->typeofIn($key)){ 
     37                if(!in_array($key, $propertyNames)){ 
     38                    throw new InvalidArgumentException('param ' . $param . ' has not propery: ' . $key . ' instatement: ' . $stmt->queryString); 
     39                } 
    3540                $stmt->bindParam($bindKey, $param->$key); 
    3641                continue; 
    3742            } 
    38             $paramValue = $param->$key; 
     43             
     44            $paramValue = null; 
     45            if(isset($param->$key)){ 
     46                $paramValue =  $param->$key; 
     47            } 
    3948            if(null === $paramValue){ 
    40                 $stmt->bindParam($bindKey, null, PDO::PARAM_NULL | PDO::PARAM_INPUT_OUTPUT); 
     49                $stmt->bindParam($bindKey, $paramValue, PDO::PARAM_NULL | PDO::PARAM_INPUT_OUTPUT); 
    4150                continue; 
    4251            }