私の英語は申し訳ありませんが、Googleで正しい単語を見つけられず、なぜこのように機能するのかを知ることはできません。非常に簡単に解決する必要があります!変数を使わずに直接関数を返す
私はPHP 7を使用していますが、クエリで関数から提供された戻り値を使用する(バインドする)必要があります。私のバインド関数で直接関数を呼び出すと、何も返されません。私が$ var = function($ a)のように外側を呼び出して、$ varをbind関数に使うと、それは動作します。
なぜ私はこの機能を直接使用できないのですか?私が関数のパラメータ(function getID($ this-> getName(1))のような)でこれを行うと、それは機能します。なぜここにはないのですか?コード:
は
$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();
機能はかなり基本的なものです(/呼び出し機能/リターンを格納する変数を使用して)
$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();
ワークスは動作しません
public function getTodayWinnerFs($userID)
{
// query stuff
return $this->bdd->resultObj()->Wins;
}
機能
var_dump($this->getTodayWinnerFs(494));
// string(2) "13"
のリターンの例 "バインド" 機能の私のdb 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);
}
ありがとうございます!
[初めてのデータベースラッパーの小児疾患](https://phpdelusions.net/pdo/common_mistakes) –