Извините за свой английский, я не могу найти правильные слова в Google, чтобы узнать, почему он действует именно так. Должно быть очень легко решить!Использовать возврат функции напрямую без переменной
Я использую PHP 7, и я хочу использовать возврат, предоставляемый функцией для запроса (привязать его). Если я вызываю непосредственно функцию в моей функции привязки, она ничего не возвращает. Если я вызываю его снаружи, например $ var = function ($ a) и использует $ var в функции bind, он работает.
Не понимаю, почему я не могу использовать функцию напрямую? Если я делаю это в параметрах функции (например, функция 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();
Works (используя переменную для вызова/сохранения функции/возврат)
$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"
Функция "связать" с моей БД класса п.д.о.
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);
}
Спасибо!
[Ваши первые детские болезни оболочки базы данных] (https://phpdelusions.net/pdo/common_mistakes) –