PHP db2_bind_param () - PullRequest
       1

PHP db2_bind_param ()

1 голос
/ 26 августа 2011

Почему вы должны указывать имена переменных как строковые значения с помощью этой функции?Почему я не могу просто использовать имя переменной напрямую?Это кажется мне очень глупым.

Пример: db2_bind_param ($ prepare, 1, "foo1");

Ответы [ 3 ]

1 голос
/ 26 августа 2011

Как указано в руководстве , это переменная, к которой привязан ресурс:

bool db2_bind_param(resource $stmt , int $parameter-number , string $variable-name, ...)

Таким образом, у вас есть чистая подпись, потому что она всегда возвращает логическое значение и никакой другой тип данных. Другие функции возвращают либо false, либо ресурс. Я считаю, что библиотека была портирована из строго типизированного языка, такого как c или c ++. На этих языках вы можете указать только один тип возврата в подписи - что-то вроде bool|resource db2_bind_param(...) не работает.

В конце концов, вы правы: в свободно типизированном языке, таком как PHP, он вам не нужен.

1 голос
/ 26 августа 2011

Таким образом, вы можете программно связать набор переменных, как

$db_vars = array("foo1","foo2");

for($i=1; $i<=sizeof($db_vars); ++$i)
  db2_bind_param($prepared, $i, $db_vars[$i]);

. Затем вы можете получить значения программно с помощью переменных переменных:

foreach($db_vars as $var)
  echo $var,'=',$$var,"\n";

Если аргумент $variable-nameожидалось, что это будет сама переменная, основная функция абстракции функции будет нарушена, так как вы можете передать одно и то же значение и получить другие результаты:

$foo = 'hello';
db2_bind_param2($prepared, 1, $foo); // feasible, but...

db2_bind_param2($prepared, 1, 'hello'); // should give the same result as above, but what would it be?
1 голос
/ 26 августа 2011

Возможно, он делает что-то вроде:

function db2_bind_param($stmt, $position, $name) {
   global $$name;
   $$name = &$stmt[$position];
}

просто предположение, хотя ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...