単一の行の単一の列をターゲットにするmysqlクエリがあります
_"SELECT some_col_name FROM table_name WHERE user=:user"
_
ステートメント$stmt->execute();
を実行した後、この単一のセルをループなしで変数に直接配置するにはどうすればよいですか?言い換えれば、取得する方法
_from $stmt->execute();
to $col_value = 100;
_
以下の2つを試しましたが、どちらも機能しませんでした。列は元のテーブルの4番ですが、selectステートメントではそれだけを選択しているので、fetchColumnのパラメーターを指定するときは1であると想定しています。
_$col_value = $stmt->fetchColumn();
$col_value = $stmt->fetchColumn(0);
_
ご覧のとおり、できる限り数行で実行しようとしています。
行が返されていることを確認しますか?$stmt->fetchColumn()
は単一の値をフェッチする正しい方法であるため、おそらく:userパラメータをバインドしていないか、単に行を返しませんでした。
$sql='SELECT some_col_name FROM table_name WHERE user=?';
$sth=$pdo_dbh->prepare($sql);
$data=array($user);
$sth->execute($data);
$result=$sth->fetchColumn();
なぜこんなに多くの人がこれを台無しにするのか分かりません:
_$stmt = $dbh->prepare("SELECT `column` FROM `table` WHERE `where`=:where");
$stmt->bindValue(':where', $MyWhere);
$stmt->execute();
$SingleVar = $stmt->fetchColumn();
_
クエリで_*
_ではなく特定のcolumn
を選択していることを確認してください。そうでない場合は、fetchColumn()
で列の順序番号を指定する必要があります。例:$stmt->fetchColumn(2);
データベースの列は誰かによって再編成される可能性があるため、通常、これは良い考えではありません...
これは_unique 'wheres'
_でのみ正しく機能します。 fetchColumn()
は配列を返しません。
あなたはこれを使うことができます:
$stmt->fetch(PDO::FETCH_COLUMN, $number_of_column);
最初にステートメントを準備しましたか? (以前は$stmt->execute()
)
$stmt = $db->prepare("SELECT some_col_name FROM table_name WHERE user=:user");