示例#1
0
function add_bind_var($bound_query, $type, $method, $key, $value)
{
    $bv = new \query\BindVariable();
    $bv->setType($type);
    $bv->{$method}($value);
    $entry = new \query\BoundQuery\BindVariablesEntry();
    $entry->setKey($key);
    $entry->setValue($bv);
    $bound_query->addBindVariables($entry);
}
示例#2
0
function add_list_bind_var($bound_query, $type, $key, $values)
{
    $bv = new \query\BindVariable();
    $bv->setType(\query\Type::TUPLE);
    foreach ($values as $value) {
        $val = new \query\Value();
        $val->setType($type);
        $val->setValue($value);
        $bv->addValues($val);
    }
    $entry = new \query\BoundQuery\BindVariablesEntry();
    $entry->setKey($key);
    $entry->setValue($bv);
    $bound_query->addBindVariables($entry);
}
示例#3
0
 public static function BindVariable($value)
 {
     $bind_var = new \query\BindVariable();
     if (is_null($value)) {
         $bind_var->setType(\query\BindVariable\Type::TYPE_NULL);
     } else {
         if (is_string($value)) {
             $bind_var->setType(\query\BindVariable\Type::TYPE_BYTES);
             $bind_var->setValueBytes($value);
         } else {
             if (is_int($value)) {
                 $bind_var->setType(\query\BindVariable\Type::TYPE_INT);
                 $bind_var->setValueInt($value);
             } else {
                 if (is_float($value)) {
                     $bind_var->setType(\query\BindVariable\Type::TYPE_FLOAT);
                     $bind_var->setValueFloat($value);
                 } else {
                     if (is_object($value)) {
                         switch (get_class($value)) {
                             case 'VTUnsignedInt':
                                 $bind_var->setType(\query\BindVariable\Type::TYPE_UINT);
                                 $bind_var->setValueUint($value->value);
                                 break;
                             default:
                                 throw new VTException('Unknown bind variable class: ' . get_class($value));
                         }
                     } else {
                         if (is_array($value)) {
                             self::ListBindVariable($bind_var, $value);
                         } else {
                             throw new VTException('Unknown bind variable type.');
                         }
                     }
                 }
             }
         }
     }
     return $bind_var;
 }
示例#4
0
 public static function BindVariable($value)
 {
     $bind_var = new \query\BindVariable();
     if (is_array($value)) {
         if (count($value) == 0) {
             throw new VTBadInputException('Empty list not allowed for list bind variable');
         }
         $bind_var->setType(\query\Type::TUPLE);
         foreach ($value as $elem) {
             list($type, $tval) = self::TypedValue($elem);
             $bind_var->addValues((new \query\Value())->setType($type)->setValue($tval));
         }
     } else {
         list($type, $tval) = self::TypedValue($value);
         $bind_var->setType($type);
         $bind_var->setValue($tval);
     }
     return $bind_var;
 }