Используйте возврат функции напрямую без переменной
Извините за мой английский, не могу найти правильные слова в Google, чтобы понять, почему он так себя ведет. Должно быть, это очень легко решить!
Я использую PHP 7 и хочу использовать возврат, предоставляемый функцией для запроса (привязать его). Если я вызову функцию напрямую в своей функции привязки, она ничего не вернет. Если я вызову его снаружи, например, $var = функция($a) и использую $var в функции привязки, это сработает.
Я не понимаю, почему я не могу напрямую использовать эту функцию? Если я сделаю это в параметрах функция (например, функция getId($this->getName(1))) работает. почему этого не происходит здесь? Код:
Не работает
$this->bdd->query("UPDATE stats_of_the_days
SET winner_firstsolves = :winner_fs
WHERE id = :stat_id");
$this->bdd->bind("winner_fs", $this->getTodayWinnerFs($winnerID), PDO::PARAM_INT);
$this->bdd->bind("stat_id", $statID, PDO::PARAM_INT);
$this->bdd->execute();
Работает (используя переменную для вызова/сохранения функции/возврата)
$var = $this->getTodayWinnerFs($winnerID);
$this->bdd->query("UPDATE stats_of_the_days
SET winner_firstsolves = :winner_fs
WHERE id = :stat_id");
$this->bdd->bind("winner_fs", $var, PDO::PARAM_INT);
$this->bdd->bind("stat_id", $statID, PDO::PARAM_INT);
$this->bdd->execute();
Функция довольно простая
public function getTodayWinnerFs($userID)
{
// query stuff
return $this->bdd->resultObj()->Wins;
}
Пример возврата функции
var_dump($this->getTodayWinnerFs(494));
// string(2) "13"
Функция "привязка" из моего класса pdo бд
public function bind($param, $value, $type = null)
{
if (is_null($type)) {
switch (true) {
case is_int($value):
$type = PDO::PARAM_INT;
break;
case is_bool($value):
$type = PDO::PARAM_BOOL;
break;
case is_null($value):
$type = PDO::PARAM_NULL;
break;
default:
$type = PDO::PARAM_STR;
}
}
$this->stmt->bindValue($param, $value, $type);
}
Спасибо вам!
1 answers
Заключается в том, что метод getTodayWinnerFs()
и основной разделяют $this->bdd
, и при неправильном вызове он находится в другом статусе, я думаю, вам следует придерживаться рабочего примера и не выполнять вызовы функций внутри вызовов функций, это затруднит чтение.