セッションを mysql データベースに保存し、セッション ID をユーザー テーブルに保存しました。ユーザーテーブルのセッションIDを通じてセッションテーブル内の対応するデータを見つけたいと考えています。コードは次のとおりです
$sql = 'select update_time from admin_session,admin where admin_session.sessid = ?';
$stmt = $pdo->prepare($sql);
$stmt->execute( 'admin_sessid' ));
エラー メッセージは何ですか?
エラーは報告されませんが、execute(array('admin_sessid')) の実行結果は false です
array('admin_sessid') ここにはありません。バインドされたパラメータは変数値ではなく、admin_sessid 文字列である必要があります
Example #3 使用一个含有插入值的数组执行一条预处理语句(占位符)<?php/* 通过传递一个插入值的数组执行一条预处理语句 */$calories = 150;$colour = 'red';$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?');$sth->execute(array($calories, $colour));?>
$sql = 'select update_time from admin_session,admin where admin_session.sessid = ?';$stmt = $pdo->prepare($sql);$name = 'admin.sessid';try{ if(!$stmt->execute(array($name))) { throw new PDOException(111); };} catch(PDOException $e) { echo $e->getMessage();}
execute(array('admin_sessid')) の実行結果は false です
これはエラーが発生したことを意味します。これは PHP のせいではないため、自動的にプロンプトが表示されることはありません
errorInfo を出力できます 結果を確認してください
これで、execute(array('admin_sessid')) はエラーを報告しなくなりました
しかし、次の結果を見つけたいのですが、失敗しました
[code=php
]$sql = 'select update_time admin_session,admin から admin_session.sessid= ?';
$stmt = $pdo->prepare($sql);
$name = 'admin.sessid'
$stmt->execute($name) ));
$ress=$stmt ->fetch(PDO::FETCH_ASSOC);
[/code]
ただし、次の update_time の検索など、他のデータを検索すると、正しく返されます。 = 'select update_time from admin_session where update_time
これは元の質問に戻りますが、2 つのテーブルから 1 つのデータを見つけたいのですが、どうすればよいでしょうか?
関連する 2 つのテーブルをクエリするには!
select update_time from admin_session,admin where admin_session.sessid=admin.sessid
データは mysql にあります
$sql = 'select update_time from admin_session,admin where admin_session.sessid=?';
$stmt = $p do ->prepare($sql);
$name = 'admin.sessid';
$stmt->execute(array($name));
がバインドされているのはなぜですか値です。フィールド名ではありません
少なくとも次のように記述する必要があります
$sql = 'select update_time from admin_session,admin where admin_session.sessid=admin.sessid and admin.sessid=?'; 左のクエリも有効ですが、次のクエリが見つからないのはなぜですか?
select update_time from admin_session,admin where admin_session.sessid=admin.sessid
バインディングはフィールド名ではなく値です
少なくともそれを記述する必要があります。このように